web-dev-qa-db-ja.com

すべてのブラウザで<meta>タグを使用してキャッシュを無効にする

Webサーバーのヘッダーにアクセスできない場合は、キャッシュをオフにすることができます。

<meta http-equiv="Cache-Control" content="no-store" />

しかし、私はまたこれがIEのいくつかのバージョンでは機能しないことを読みました。すべてのブラウザでキャッシュを無効にする<meta>タグのセットはありますか?

415
leeand00

最新のWebブラウザ用(IE9以降)

正しい情報については、ページ上部にリストされている複製を参照してください。

ここで答えを見てください: すべてのブラウザで、Webページのキャッシュを制御する方法?


IE9以前の場合

これを盲目的にコピーして貼り付けないでください。

リストはさまざまなテクニックの単なる例であり、直接挿入するためのものではありません。コピーした場合、http-equiv宣言のために2番目のものが最初のものを上書きし、4番目のものが3番目のものを上書きし、W3Cバリデーターで失敗します。せいぜい、各http-equiv宣言を1つずつ持つことができます。プラグマ、キャッシュ制御および期限切れ最新のブラウザを使用している場合、これらは完全に古くなっています。とにかくIE9の後。 ChromeとFirefoxは、あなたが予想していたとしても、とにかくうまく動作しません。

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

実際にはまったく使用しないでください。

キャッシュヘッダはmeta要素では信頼できません。 1つは、サイトとユーザーの間のWebプロキシはそれらを完全に無視することです。 Cache-ControlやPragmaなどのヘッダーには、常に実際のHTTPヘッダーを使用してください。

691
user159088

これは、業界全体のキャッシュ制御の誤解に関する優れたケーススタディへのリンクです。

http://securityevaluators.com/knowledge/case_studies/caching/

要約すると、この記事によると、Cache-Control: no-storeのみがChrome、Firefox、およびIEによって認識されます。 IEは他のコントロールを認識しますが、ChromeとFirefoxは認識しません。

74
Paul

IE5では機能しませんが、大きな問題ではありません。

ただし、ヘッダーのキャッシュはmeta要素では信頼できません。 1つは、サイトとユーザーの間のWebプロキシはそれらを完全に無視することです。 Cache-ControlやPragmaなどのヘッダーには、常に実際のHTTPヘッダーを使用してください。

24
bobince

同じサービスコールを繰り返すと(ロングポーリング)、サービスコールに関するキャッシュの問題に気づきました。メタデータを追加しても役に立ちませんでした。 1つの解決策はtimestampを渡してieが別のhttpサービス要求であると見なすようにすることです。これは私にとってはうまくいったので、このタグを自動的に更新するためにサーバーサイドのスクリプトコードスニペットを追加しても問題ありません:

<meta http-equiv="expires" content="timestamp">

5
user1496767

プラグマはあなたの最善の策です:

<meta http-equiv="Pragma" content="no-cache">
5