2017-08-23 2 views
2

まず、私は同じことを言ってherehereオンラインいくつかのリソースが見つかりました:「通常の再読み込み」を実行しているときにChromeがメモリ内キャッシュを再検証しないのはなぜですか?

ソフト/ノーマルリロードのために、ブラウザは、ファイルが変更されたかどうかをチェックする、キャッシュを再検証します。

私はChromeでテストしました。 bodyの最後にいくつかのjavascriptファイルをロードするウェブページindex.htmlがあります。リフレッシュボタン(ソフト/ノーマル)を押すと、ネットワークパネルからindex.htmlが表示され、304 Not Modifiedとなりました。しかし、すべてのjavascriptファイルはステータスコード200のfrom memory cacheでロードされました。再検証はありません!

次に、JavaScriptファイルの1つを修正しようとしました。ソフトリロードしましたか?そして、何を推測する?そのファイルはまだメモリキャッシュからロードされました!

なぜChromeでこれが行われますか?それは、リフレッシュボタンの目的を破るものではありませんか?

Hereは、Chromeのメモリキャッシュに関する詳細です。

+0

どのようにファイルを提供していますか?サーバーがキャッシュ制御ヘッダーを追加している可能性があります。キャッシュされたアセットの[ネットワーク]タブを確認し、ヘッダーを確認します。 –

+0

「リフレッシュボタンの目的を破ることはできませんか?」そうではありませんか、それはハードリフレッシュの目的を破るでしょう。 – Keith

+0

@Rob最初にリンクしたリソースは、キャッシュが期限切れになっていなくても、ソフトリロードがキャッシュの「再検証」を行うということです。アドレスバーからページを開くと、期限切れでない場合はキャッシュの再検証を行いません。 [ここ](https://www.raymond.cc/blog/refresh-webpage-with-soft-or-hard-reload-in-web-browsers/)を参照してください。キャッシュ制御が原因ではないはずです。 – Shawn

答えて

0

ブラウザキャッシュは単純な200,304より少し複雑で、ヘッダーのサーバー側ディレクティブに注意して、特定のサイトごとにキャッシュを処理する方法を教えてください。

ブラウザのキャッシングプロファイルを調整するには、さまざまなヘッダー(Cache-Controlなど)を使用して、期限切れになる前に新しいコピーを要求する代わりにローカルコピーを使用するようブラウザに指示することができます。あなたが本当に変更したくないコンテンツ(例:会社のロゴ)の場合Cache-Control: public, max-age=31536000

Expiresヘッダーを設定することもできます。このヘッダーは、Cache-Controlとほとんど同じ操作を行うことができますが、コントロールはほとんどありません。 ちょうどは、ブラウザが資産を失効したとみなして再要求するまでの時間を設定します。再要求では、変更されていないレスポンスコードがサーバーから返された場合でも、キャッシュされた結果が得られます。

多くのWebサーバーでは、特定のアセットファイル(js、images、css)のより積極的なキャッシュを許可する設定が有効になっていますが、コンテンツファイルのキャッシュはあまり積極的ではありません。

関連する問題