Web開発では、Webサイトのパフォーマンスが重要です。ブラウザキャッシュは、ウェブサイトのパフォーマンスを改善する上で重要な要素です。ブラウザキャッシュの合理的な使用は、ウェブサイトの読み込み時間を大幅に短縮し、ユーザーエクスペリエンスを改善し、サーバーの負担を軽減できます。この記事では、PHPのHeader()関数を使用して、適切なキャッシング戦略を設定することにより、ブラウザキャッシュを制御し、ウェブサイトのパフォーマンスを改善する方法を紹介します。
ブラウザキャッシュは、ユーザーのローカルデバイスに静的リソース(画像、CSS、JavaScriptファイルなど)を保存することにより、同じページにアクセスするときにユーザーの読み込み時間を短縮するメカニズムです。ユーザーが再び同じページにアクセスすると、ブラウザはサーバーから再びリクエストすることなく、キャッシュからリソースを直接ロードして、ページの読み込みを加速できます。
PHPでは、 Header()関数を使用してHTTPヘッダーを設定して、ブラウザのキャッシュ動作を制御できます。 Cache Controlヘッダーを合理的に構成することにより、リソースの読み込みを最適化し、冗長ネットワークリクエストを削減できます。
ブラウザのキャッシュを制御するいくつかの一般的なHTTPヘッダーを次に示します。
キャッシュコントロール:キャッシュポリシーを指定します。
期限切れ:リソースの有効期限が切れる時間を設定します。
ETAG :リソースが更新されたかどうかを判断するために、リソースに一意の識別子を提供します。
LASTMODIFIED :リソースが最後に変更された時間を指定します。
<?php
// キャッシュコントロールヘッダーを設定します,静的リソースをキャッシュするようブラウザに伝えます,キャッシュ時間は1日です
header("Cache-Control: max-age=86400, public");
// 設定 Expires 頭,設定缓存的过期时间为明天
$expires = gmdate("D, d M Y H:i:s", strtotime("+1 day")) . " GMT";
header("Expires: $expires");
// 設定 ETag 頭,リソースのコンテンツハッシュを一意の識別子として使用します
$etag = md5(file_get_contents("path/to/your/resource"));
header("ETag: \"$etag\"");
// 設定 Last-Modified 頭,設定资源的最后修改时间
$lastModified = gmdate("D, d M Y H:i:s", filemtime("path/to/your/resource")) . " GMT";
header("Last-Modified: $lastModified");
?>
キャッシュコントロールヘッダーを使用して、キャッシュの特定のポリシーを指定できます。一般的なオプションには次のとおりです。
max-age = <seconds> :ブラウザでリソースを秒単位でキャッシュできる最大時間を指定します。たとえば、 Max-Age = 86400は、リソースを1日間キャッシュに保存できることを意味します。
ノーキャッシュ:キャッシュに既にコピーがある場合でも、要求するたびにリソースの有効性を検証するようブラウザに指示します。
ストアなし:リクエストが要求されるたびにリソースがキャッシュされておらず、サーバーから再フェッチされることを意味します。
有効期限は、リソースの有効期限を設定します。ブラウザは、キャッシュが有効かどうかを判断するための基礎として今回を使用します。現在の時刻が期限切れになると、ブラウザはリソースを取得するためにサーバーを再リケストします。今回は特定の日時です。 GMDATE()関数は通常、GMT形式で時間文字列を生成するために使用されます。
$expires = gmdate("D, d M Y H:i:s", strtotime("+1 day")) . " GMT";
header("Expires: $expires");
ETAGは、サーバーによって生成される識別子であり、通常はリソースコンテンツのハッシュです。 ETAGを介して、ブラウザはローカルキャッシュリソースが変更されたかどうかを判断できます。サーバーによって返されたETAGとETAGが同じ場合、ブラウザはローカルキャッシュを使用できます。そうしないと、リソースが再びサーバーから取得されます。
ラスト変更されたヘッダーは、リソースの最後の変更時間を示します。ブラウザがリクエストを送信すると、今回はサーバーに送信され、サーバーは変更時間に基づいてリソースが変更されたかどうかを判断します。リソースが変更されていない場合、304ステータスコードが返され、ブラウザにキャッシュを使用するように指示します。
静的リソースのキャッシュ:画像、CSS、およびJavaScriptファイルの場合、通常、1日以上などのより長いキャッシュ時間を設定できます。 Max-age = 86400をCache-Controlで設定すると、ブラウザはサーバーを毎回リクエストせずにこれらのファイルをキャッシュします。
動的リソースのキャッシュ:動的コンテンツ(ページHTMLなど)の場合、ラスト修飾またはETAGを使用して、リソースが実際に変更された場合にのみリロードされるようにすることができます。これにより、不必要な要求を効果的に削減できます。
制御キャッシュの障害:使用期限が切れるために、適切な有効期限時間を設定して、キャッシュが有効期限が切れているときに依然として有効であることを確認し、不要なリソースのリロードを避けます。
実際の開発では、コード内の外部リソースのURLを使用する場合があります。これらのリソースのドメイン名が変更されたら、簡単な変更でキャッシュポリシーを更新できます。
たとえば、次のURLがあるとします。
$url = "http://example.com/resource";
次のコードを使用して、 example.comをM66.netに置き換えて、新しいドメイン名のキャッシュ制御を確認できます。
$url = str_replace("example.com", "m66.net", $url);
このようにして、キャッシュコントロールに影響を与えることなく、コードのドメイン名を簡単に変更できます。
合理的なキャッシング制御は、ウェブサイトのパフォーマンスを向上させるための重要なヒントの1つです。 PHPのHeader()関数を介して、さまざまなキャッシュヘッダーを設定して、ブラウザがリソースを効果的にキャッシュするのに役立ち、ページの読み込み速度を改善し、サーバーの圧力を削減できます。キャッシュコントロール、有効期限、 ETAG 、ラスト修飾を使用することにより、あなたのウェブサイトがパフォーマンスで最適化されるようにすることができます。
この記事が、PHPを使用してブラウザキャッシュを制御してウェブサイトのパフォーマンスを向上させる方法をよりよく理解するのに役立つことを願っています!
関連タグ:
header