ホームページ >バックエンド開発 >PHPチュートリアル >PHP で HTTP キャッシュ ヘッダーを利用して Web パフォーマンスを向上するにはどうすればよいですか?

PHP で HTTP キャッシュ ヘッダーを利用して Web パフォーマンスを向上するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 16:18:02565ブラウズ

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

HTTP キャッシュ ヘッダー: PHP による Web パフォーマンスの向上

静的なコンテンツが多い Web サイトの場合、HTTP キャッシュ ヘッダーを実装するとパフォーマンスが大幅に向上します。 PHP には、このタスクに役立ついくつかの組み込み関数が用意されています。

必須キャッシュ ヘッダー

キャッシュを有効にするには、次のヘッダーの使用を検討してください:

  1. Cache-Control: キャッシュ ポリシーを指定します。パブリックにキャッシュすべきでないプライベート コンテンツの場合は、private_no_expire を使用します。有効期間が長いパブリック コンテンツの場合は、public, max-age= を使用します。
  2. Expires: キャッシュされたコンテンツの有効期限を設定します。決して変更されないコンテンツの場合は、遠い日付を設定することを検討してください。
  3. Last-Modified: コンテンツが最後に変更された時間を示します。これにより、ブラウザはキャッシュされたコンテンツがまだ最新かどうかを判断できます。
  4. ETag: コンテンツの一意の識別子。 ETag が If-None-Match リクエスト ヘッダーの値と一致する場合、ブラウザはコンテンツが変更されていないとみなして、キャッシュされたバージョンを提供できます。

条件付きリクエストの処理

Toパフォーマンスをさらに最適化し、条件付きリクエストを処理します:

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。