4

httpヘッダーを学習していて、「cache-control」フィールドでテストを実行したいので、デフォルトページしかないasp.net Webサイトを構築します。このページでは、「cache-control」をテストしています。 "以下のPage_Loadのコードを含むフィールド:

Response.AddHeader("Cache-Control","max-age=3600");
Response.Write(new Random().Next(0,9999).ToString());

「Cache-Control:max-age = 3600」ヘッダーを受け取ったときにページがブラウザによってローカルにキャッシュされるため、ページを更新するたびに同じ番号が表示されると思いましたが、驚いたことに、キャッシュコントロールがまったく機能しないのと同じように、更新ボタン(ctrl + f5ではない)を押すたびに新しい番号が表示されます。

fiddlerを使用して要求/応答情報をキャッチすると、要求ヘッダーに「Cache-Control:max-age = 0」があり、応答ヘッダーに「Cache-Control:max-age=3600」があることがわかります。 「Cache-Control:max-age = 0」はキャッシュを防ぎますが、なぜですか?私は何かが足りないのですか?

4

1 に答える 1

10

ブラウザでは、F5は「条件付き更新」を実行します。これは条件付きリクエストでサーバーにアクセスします(サーバーがHTTP / 304経由でそうするように指示した場合にのみキャッシュファイルを使用します)。キャッシュヘッダーの効果を確認するには、代わりに同じページに新しいタブを開きます。すべてを正しく構成した場合、同じ値が表示されます。

ブラウザの更新について詳しくは、http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about-conditional-http-requests-and-the-refresh-button.aspxをご覧ください。

于 2012-10-25T22:18:19.623 に答える