」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > HTTP 快取標頭如何優化 PHP 網站效能?

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

發佈於2024-11-10
瀏覽:623

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 程式碼範例示範如何處理條件請求:

$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 && $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}\"");
}

透過實作快取標頭並有效處理條件請求,您可以大幅提升 PHP 網站的效能和使用者體驗。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3