首頁  >  文章  >  後端開發  >  HTTP 快取標頭如何優化 PHP 網站效能?

HTTP 快取標頭如何優化 PHP 網站效能?

Susan Sarandon
Susan Sarandon原創
2024-11-04 05:37:29566瀏覽

How can HTTP Cache Headers Optimize PHP Website Performance?

使用HTTP 快取頭來最佳化PHP 網站效能

儘管有先進的快取系統和框架,但有時還是有必要實現基本的HTTP快取標頭以提高網站效能。特別是對於缺乏某些快取功能的 PHP 5.1.0 網站,標頭起著至關重要的作用。

PHP 網站的有效緩存標頭

要啟用有效的緩存,請考慮以下標頭:

  • Last -Modified: 設定文件的上次修改日期,瀏覽器使用該日期來確定自上次造訪以來內容是否已更改。
  • ETag:指定文件的唯一識別符,允許瀏覽器檢查是否已經有最新版本。
  • Expires:設定絕對過期時間對於文檔,指示瀏覽器在該時間之後不要快取它。
  • Cache-Control: 控制瀏覽器快取文件的方式和時間長度。它可以設定為“公共”,允許任何人快取文檔,也可以設定為“私有”,將快取限制為單一使用者。如果您需要更長的快取長度而又不允許公共緩存,您可能需要考慮使用「private_no_expire」。

實現條件請求

除了設定快取標頭之外,處理條件請求至關重要,例如「If-Modified-Since」和「If -None-Match」。這些請求允許瀏覽器檢查文件自特定日期以來是否已更改,或者 ETag 自上次訪問以來是否已更改。

如果內容未更改,您可以傳回「304 Not Modified」狀態代碼,表示瀏覽器可以繼續使用快取版本。這種有效的方法可以最大限度地減少不必要的下載並加快網站載入速度。

以下PHP 程式碼範例示範如何處理條件請求:

<code class="php">$timestamp = /* PHP script to generate a unique timestamp */;
$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>

透過有效地實現快取標頭並處理條件請求,您可以顯著提高您的PHP 網站的效能和使用者體驗。

以上是HTTP 快取標頭如何優化 PHP 網站效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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