PHP とブラウザーのキャッシュ メカニズムの概要_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:11:13
オリジナル
956 人が閲覧しました

ブラウザのキャッシュ ポリシーは、閲覧したファイルをローカル ディスクに一時的にキャッシュします。ユーザーが繰り返しページをリクエストすると、ページが変更されていないことがクライアントに通知され、キャッシュを呼び出すことができます。 では、クライアントにページ キャッシュがあるかどうかはどうすればわかるのでしょうか? HTTP プロトコル レベルから見ると、ブラウザがリクエストを送信すると、まず次の

HTTP ヘッダーが送信されます:

Connection Keep-Alive
Date Sun, 06 May 2012 18:00:36 GMT
Last-Modified Sun, 06 May 2012 17: 31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06
Keep-Alive timeout=15, max=299
Server Apache/2.2.16 (Unix) DAV/2
Vary Accept-Encoding

次の 2 行に注意してください。ページキャッシュ情報:

Last-Modified Sun, 06 May 2012 17:31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06 この場合、サーバーが 304 ステータス コードで応答すると、ブラウザは応答すると意識的にキャッシュからデータを読み取ります。ステータス コード 200 の場合、クライアント キャッシュがあるかどうかに関係なく、サーバーから読み取られます。

この理論的裏付けによれば、たとえば、ウェブマスター軍のクエリ結果のほとんどは、ajax を介して非同期的に取得され、二次アクセスのためにこの方法でキャッシュを変更できます。クライアントにキャッシュがある限り、304 応答ステータス コードをクライアントに送信し、プログラムの実行を終了します。

ブラウザによって送信されたリクエストには、If-Modified-Since と If-None-Match の 2 つのパラメータが含まれています。

If-Modified-Since は、データの最終変更時刻が特定の時刻値であるかどうかを尋ねることを意味します。次に、サーバーはデータの最終変更時刻を確認し、その時刻である場合は 304 ステータス コードを返します。ステータス コードを受信した後、クライアントはローカル キャッシュからキャッシュを直接読み取ります。この状況には前提条件があります。つまり、ブラウザーが If-Modified-Since パラメーターを送信する前にキャッシュ リソースがローカルに存在する必要があり、その値は最後のサーバーから返された Last-Modified 値です。

If-None-Match はサーバーから返された Etag 値によって生成され、サーバーによってデータの変更時間を確認するためにのみ使用されます。 If-Modified-Since と Last-Modified を組み合わせた方法はすべてのサーバーでサポートされているわけではないことを考慮して、ここでは etag を使用した実装のみを検討します。

PHP では、$_SERVER['HTTP_IF_NONE_MATCH'] を使用して、ファイルがブラウザーによってキャッシュされているかどうかを判断できます。コード スニペットは次のとおりです:

//etag タグを使用してキャッシュを制御します

コードは次のとおりです コードをコピーします
$etag = md5(date('Ymd'));
if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) {
header('Etag:' . $ etag, true, 304);
exit();
} else {
header('Etag:' . $etag);

}ここでは、現在の日付を使用して etag を生成します。このパラメータは必要に応じて変更できます。

追加の説明:
それが 304 応答であっても、データを送信する必要があるかどうかを判断するために接続を確立する必要があるため、実際にはサーバーに要求されます。
もう 1 つ。キャッシュのタイプは 200 応答です。キャッシュは接続を確立しませんが、要求は 200 ステータス コードで応答し、ローカルからキャッシュを直接読み取ります。


www.bkjia.com本当http://www.bkjia.com/PHPjc/444666.html技術記事ブラウザのキャッシュ ポリシーは、閲覧したファイルをローカル ディスクに一時的にキャッシュします。ユーザーが繰り返しページをリクエストすると、ページが変更されていないことがクライアントに通知され、キャッシュを呼び出すことができます。 それは…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート