静的コンテンツを含む動的 Web サイトに対して、PHP を使用して HTTP キャッシュを効果的に実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-04 09:35:01
オリジナル
727 人が閲覧しました

How can I effectively implement HTTP caching with PHP for dynamic websites with static content?

HTTP キャッシュと PHP の統合

ページ コンテンツが主に静的であるものの、動的テンプレートに囲まれている状況では、HTTP キャッシュ ヘッダーを利用することで、ページ配信。ここでは、PHP を使用して効果的なキャッシュを実装するための簡単なガイドを示します:

キャッシュに必須のヘッダー

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

  • Content-Type: 応答の MIME タイプと文字セットを指定します。
  • Vary: Accept: 応答がクライアントの Accept に基づいて変化する可能性があることを示しますヘッダー、コンテンツ ネゴシエーションを制御します。
  • Cache-Control: private_no_expire のようなディレクティブを設定して、プライベート キャッシュを許可しますが、再検証を防ぎます。または、public を使用して共有キャッシュを許可します。
  • Last-Modified: コンテンツが最後に変更された日時を指定します。
  • ETag: キャッシュされたバージョンがまだ最新かどうかをクライアントが判断するために使用できる一意の識別子をコンテンツに割り当てます。

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

if-modified-sinceif-none-match を使用して、受信した条件付きリクエストを処理します:

  • if-modified-since : リクエスト ヘッダーと Last-Modified ヘッダーを比較します。キャッシュされたバージョンがまだ有効な場合は、304 (未変更) ステータス コードを返します。
  • 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 &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>
ログイン後にコピー

以上が静的コンテンツを含む動的 Web サイトに対して、PHP を使用して HTTP キャッシュを効果的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!