Dalam senario di mana halaman web dinamik terutamanya terdiri daripada kandungan statik, menggunakan pengepala cache HTTP dengan PHP boleh meningkatkan prestasi tapak web dengan ketara . Panduan ini akan menyelidiki tajuk penting untuk caching yang berkesan.
kawalan cache: private, max-age=180 - Menetapkan cache peribadi untuk 180 saat. Cache peribadi hanya boleh diakses oleh pengguna individu, menghalang perkongsian antara berbilang pelanggan.
cache-control: public, max-age=180 - Tetapkan cache awam selama 180 saat. Cache awam tersedia untuk semua pelanggan, membenarkan akses dikongsi.
Terakhir Diubah Suai: tarikh dan masa GMT - Menyediakan tarikh dan masa apabila kandungan kali terakhir diubah suai, membenarkan penyemak imbas menyemak kemas kini.
ETag: (pengecam unik) - Menghasilkan cincang atau checksum yang mewakili keadaan unik kandungan. Penyemak imbas menggunakan pengepala ETag untuk mengesahkan sama ada kandungan telah berubah sejak permintaan terakhir.
Jika-Diubah Suai-Sejak: tarikh dan masa GMT - Pelanggan menghantar tarikh terakhir sumber diubah suai yang diketahui. Jika tiada perubahan sejak tarikh itu, pelayan bertindak balas dengan status 304 Not Modified, mengelakkan pengambilan kandungan yang tidak perlu.
If-None-Match: (pengecam unik) - Pelanggan menghantar nilai ETag terakhir yang diketahui untuk sumber tersebut. Jika ETag sepadan dengan nilai semasa pelayan, status 304 Not Modified dikembalikan.
Untuk melaksanakan pengepala ini dalam PHP, pertimbangkan contoh kod berikut:
<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT'; $etag = md5($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 && $if_none_match == $etag) || (!$if_none_match)) && ($if_modified_since && $if_modified_since == $tsstring)) { header('HTTP/1.1 304 Not Modified'); exit(); } else { header("Last-Modified: $tsstring"); header("ETag: \"{$etag}\""); }</code>
Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Prestasi Laman Web dengan Pengepala Cache HTTP dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!