將HTTP 快取與PHP 整合
在頁面內容主要保持靜態但被動態模板包圍的情況下,利用HTTP 快取標頭可以優化頁面交付。以下是使用PHP 實現有效緩存的簡化指南:
緩存的基本標頭
要啟用緩存,請考慮發送以下標頭:
條件請求與處理
使用if-modified-since 和if-none-match:
和if-none-match: 依照 ETag 標頭進行驗證。如果快取版本匹配,則傳回 304。
確定快取有效性產生 ETag 時,考慮使用校驗和或使用者等因素的組合ID、語言和時間戳記。對於更持久的靜態內容,請設定更長的過期時間。
<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 && $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>範例實作
以上是如何使用 PHP 為具有靜態內容的動態網站有效實作 HTTP 快取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!