6

私はこのコードをページに持っています:

<!-- no cache headers -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<!-- end no cache headers -->

他のページに行ってブラウザの戻るボタンを押すと(このコードが書かれたページに戻る)、ページのキャッシュ状態がまだ残っています。オプションは、PhaseListener を追加することですが、PhaseListener を追加することは維持する追加のコードであると私に言いました。
問題は次のとおりです:
1. メタ タグ属性 http-equiv 値 cache-control は、すべてのブラウザーの html でまだサポートされていますか?? w3school をチェックインすると、属性 http-equiv に値 cache-control、pragma、および expires がないためです。
2. phaseListener を追加すると、すべてのページにメタ タグを追加することに対してどのような利点がありますか?
よろしくお願いします

4

2 に答える 2

8

タグは、<meta http-equiv>問題の HTML ファイルがローカル ディスク ファイル システムなどの非 HTTP リソースから ( file://URI を介して) 開かれた場合にのみ使用され、問題の HTML ファイルが実際の HTTP リソースから ( http://URI を介して)開かれた場合には使用されません。 . 代わりに、経由で設定された実際の HTTP 応答ヘッダーHttpServletResponse#setHeader()が使用されています。

<meta http-equiv>したがって、これらのタグが無視されるため、具体的な問題が発生します。

以下も参照してください。

于 2013-07-24T13:09:29.770 に答える
1

この属性を介してサポートされるのは一部のヘッダーのみhttp-equivであり、サポートはブラウザーによって異なります。たとえば、Mozillaは次のサポートのみを文書化しています。

  • コンテンツ言語
  • コンテンツ セキュリティ ポリシー
  • コンテンツタイプ
  • デフォルトスタイル
  • リフレッシュ
  • セットクッキー

サーバーがこのヘッダーを解析することを意図していました ( meta http-equiv - HTTP ヘッダーの一部として送信されますか、それともクライアントがメタ タグの本文を解析しますか? ) が、これは広く実装されることはありませんでした。Apache httpd によって実装されていますmod_proxy

ProxyHTMLMeta を有効にするもう 1 つの効果は、HTML要素<meta http-equiv=...>のこの形式の本来の目的に沿って、すべての宣言を解析し、それらを実際の HTTP ヘッダーに変換することです。<meta>

<meta> タグを使用して、すべてのブラウザーでキャッシュをオフにしますか? は、より多くのブラウザーで機能する可能性のある形式を提案していますが、一般に、これはサポートされている手法ではありません。

于 2015-02-09T11:32:39.867 に答える