3

PHP では、デフォルトでキャッシュ関連のヘッダーは送信されません。

HTTP/1.1 200 OK
Date: Fri, 19 Nov 2010 11:02:16 GMT
Server: Apache/2.2.15 (Win32) PHP/5.2.9-2
X-Powered-By: PHP/5.2.9-2
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 26
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

さて、デフォルトではキャッシングについて何も言わないので、状況によっては example.com/index.php がキャッシュされる可能性がありますか?

4

3 に答える 3

4

はい、通常、サーバー側でルールが設定されていない場合、ブラウザーはデフォルトで特定のファイル (通常は画像と css) をキャッシュします (ブラウザーのキャッシュを参照)。

キャッシュ制御ヘッダーを設定してこれを制御するか、次を使用して完全に無効にすることができます。

header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache");

ヘッダーの例 #2 を参照し、その下の注を読んでください。

于 2010-11-19T11:34:44.107 に答える
4

はい。一般に、いくつかの制約がない限り、成功したすべての応答がキャッシュされる可能性があります。

cache-control (セクション 14.9 ) ディレクティブによって特に制約されていない限り、キャッシュ システムは常に成功した応答 (セクション 13.8を参照) をキャッシュ エントリとして格納してもよく、それが新鮮であれば検証なしで返すことができ、検証が成功した後に返すことができます。 .

于 2010-11-19T11:52:21.640 に答える
1

状況によっては、example.com/index.php がキャッシュされる可能性がありますか?

そうすべきではありませんが、この点で正しく動作しない実装がたくさんあります (特にモバイル デバイス/モバイル プロキシ)。

また、キャッシュに関する悪い情報もたくさんあります。「Pragma: no-cache」は、サーバーから送信されると意味がありません。

キャッシュを防止するには:

header("Cache-Control: no-store, no-cache, must-revalidate"); 

他のすべてが失敗した場合 -マニュアルを確認してください

于 2010-11-19T11:45:10.373 に答える