首頁 >後端開發 >php教程 >如何在 PHP 中利用 HTTP 快取標頭來增強 Web 效能?

如何在 PHP 中利用 HTTP 快取標頭來增強 Web 效能?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 16:18:02563瀏覽

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

HTTP 快取標頭:使用 PHP 增強 Web 效能

對於大量靜態內容的網站,實作 HTTP 快取標頭可以顯著提高效能。 PHP 提供了幾個內建函數來幫助完成此任務。

基本快取標頭

要啟用緩存,請考慮使用下列標頭:

  1. Cache-Control: 指定快取策略。對於不應公開快取的私有內容,請使用 private_no_expire。對於壽命較長的公開內容,請使用 public, max-age=.
  2. Expires: 設定快取內容的過期日期。對於永不更改的內容,請考慮設定較遠的日期。
  3. Last-Modified: 表示內容的上次修改時間。這允許瀏覽器確定快取的內容是否仍然是最新的。
  4. ETag:內容的唯一識別碼。如果 ETag 與 If-None-Match 請求標頭中的值匹配,則瀏覽器可以假定內容未更改並提供快取版本。

處理條件請求

至進一步優化效能,處理條件請求:

<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>

如果If-None-Match 標頭與ETag 匹配,或If -Modified-Since 標頭與Last-Modified 日期匹配,則304 Not Modified 響應為返回,說明快取內容足夠。否則,伺服器將傳回最新內容。

透過實作這些快取標頭,您可以大幅減少 Web 伺服器上的負載,並透過更快的頁面載入來改善使用者體驗。

以上是如何在 PHP 中利用 HTTP 快取標頭來增強 Web 效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn