Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menggunakan pengepala cache HTTP dengan PHP untuk meningkatkan prestasi web?

Bagaimanakah saya boleh menggunakan pengepala cache HTTP dengan PHP untuk meningkatkan prestasi web?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-05 16:18:02454semak imbas

How can I utilize HTTP cache headers with PHP to enhance web performance?

Pengepala Cache HTTP: Meningkatkan Prestasi Web dengan PHP

Untuk tapak web dengan sebahagian besar kandungan statik, melaksanakan pengepala cache HTTP boleh meningkatkan prestasi dengan ketara. PHP menyediakan beberapa fungsi terbina dalam untuk membantu tugasan ini.

Pengepala Cache Penting

Untuk mendayakan caching, pertimbangkan untuk menggunakan pengepala berikut:

  1. Kawalan Cache: Menentukan dasar cache. Untuk kandungan peribadi yang tidak sepatutnya dicache secara terbuka, gunakan private_no_expire. Untuk kandungan awam dengan jangka hayat yang panjang, gunakan awam, max-age=.
  2. Tamat: Menetapkan tarikh tamat tempoh untuk kandungan cache. Untuk kandungan yang tidak pernah berubah, pertimbangkan untuk menetapkan tarikh yang jauh.
  3. Terakhir Diubah Suai: Menunjukkan kali terakhir kandungan itu diubah suai. Ini membolehkan penyemak imbas menentukan sama ada kandungan cache masih terkini.
  4. ETag: Pengecam unik untuk kandungan tersebut. Jika ETag sepadan dengan nilai dalam pengepala permintaan If-None-Match, penyemak imbas boleh menganggap kandungan tidak berubah dan menyediakan versi cache.

Mengendalikan Permintaan Bersyarat

Kepada mengoptimumkan prestasi lagi, mengendalikan permintaan bersyarat:

<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT';
$etag = $language . $timestamp;

$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false;
if ((($if_none_match &amp;&amp; $if_none_match == $etag) || (!$if_none_match)) &amp;&amp;
    ($if_modified_since &amp;&amp; $if_modified_since == $tsstring)) {
    header('HTTP/1.1 304 Not Modified');
    exit();
} else {
    header("Last-Modified: $tsstring");
    header("ETag: \"{$etag}\"");
}</code>

Jika pengepala Jika-Tiada-Padanan sepadan dengan ETag atau jika pengepala If-Modified-Since sepadan dengan tarikh Last-Modified, respons 304 Not Modified dikembalikan, menunjukkan kandungan cache adalah mencukupi. Jika tidak, pelayan mengembalikan kandungan terkini.

Dengan melaksanakan pengepala cache ini, anda boleh mengurangkan beban pada pelayan web anda dengan ketara dan meningkatkan pengalaman pengguna dengan pemuatan halaman yang lebih pantas.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan pengepala cache HTTP dengan PHP untuk meningkatkan prestasi web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn