2012-01-26 13 views
2

私は本当にシンプルなサイトを作成しました。ブラウザでJSキャッシングをテストしようとしていますが、動作していないようです。私は、ファイル名が変更されない限り、ほとんどの主要なブラウザがJSファイルをデフォルトでキャッシュしていると考えました。私はサイトをIIS 7でローカルに実行しています。IIS7 ASP.NET MVC静的JavaScriptファイルキャッシュ?

私のテストでは、ボディロード時にドキュメント書き込みを行っているシンプルなJSファイルがあります。 JSファイルを変更して(文書の書き込みが記述されているテキストを変更して)ファイルを保存すると、ブラウザを更新するときに更新されたことがわかります。どうしてこれなの? JSファイル名が変更されていない限り、元の出力は表示されませんか?

Here is the simple site私はテストするために作成しました。

答えて

7

ブラウザを更新すると、ブラウザはページの表示に必要なすべてのリソースをサーバーに要求します。ブラウザに必要なリソースのキャッシュバージョンがある場合、そのリソースの要求にIf-Modified-Sinceヘッダーを送信することがあります。サーバーは、リソースを提供するだけでなく、このヘッダーを受信すると、リソースの変更された時刻とIf-Modified-Sinceヘッダーで送信された時刻を比較します。リソースが変更されている場合、サーバは200ステータスの通常どおりリソースを送り返します。しかし、リソースが変更されていない場合、サーバはステータス304(Not Modified)と応答し、ブラウザはキャッシュされたバージョンを使用します。

あなたの場合、変更日にはが変更されているため、ブラウザは新しいバージョンを送信します。

ブラウザでキャッシングをテストする最も良い方法は、おそらくfiddlerを使用して、サイトをナビゲートしている間にリクエストと応答を監視することです。ブラウザでは、すべてのリソースの新鮮なコピーを頻繁に要求する(つまり、If-Modified-Sinceヘッダーを省略する)ので、テストではリフレッシュボタンを使用しないでください。

編集:上記は、起こっていることの過度の簡略化であるかもしれません。確かにウェブ検索では、ブラウザごとにブラウザのキャッシュがどのように機能するかを深く理解できる詳細な記事が豊富に用意されています。

+0

おそらく簡素化されていますが、非常に明確なものです! –

+0

duh、私はリフレッシュボタンを押していました:-) – Alex

関連する問題