17

Strutsを使用してJavaEEWebアプリケーションを開発しています。問題は、InternetExplorerのキャッシュにあります。ユーザーがログアウトすると、キャッシュされて要求が行われないため、一部のページにアクセスできます。更新を押すと正常に動作します。また、ユーザーが再度ログインページにアクセスしても、そのページもキャッシュされるため、リダイレクトされません。

2つの解決策が思い浮かびます。

  1. インターセプター(サーブレットフィルターのような)を記述して、応答ヘッダーのキャッシュなしなどに追加します。
  2. または<meta>、各ページにタグを付けます。

どちらをすればいいですか?

4

5 に答える 5

30

むしろHttpServletResponse、問題のページに次のヘッダーを設定して、すべてのページに手動でコピーアンドペーストする必要がないようにします。

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

これは、ページに次のメタヘッダーを手動で設定するのと同じです。

<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">

この回答も参照してください。テストする前にブラウザのキャッシュをクリアすることを忘れないでください;)

于 2010-05-17T12:49:43.043 に答える
5

私は以下がうまく機能することを発見しました:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform, pre-check=0, post-check=0, private");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

この質問のタグから、Strutsを使用しているように見えます。nocache="true"Struts 1.xでは、controller要素を設定することにより、struts-config.xmlの構成を通じてこれを行うことができます。

<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" nocache="true" />

Mark Nottinghamのキャッシングチュートリアルは、HTTPとキャッシングについて、Webで見た中で最高のリソースであり、さらに理解を深めたいと考えています。

そうは言っても、表示されている問題によっては、ブラウザの履歴の問題である可能性があります。詳細については、こちらをご覧ください。

于 2010-05-17T13:03:50.147 に答える
2

プラグマがある場合でも、IE <9はキャッシュするようです。ヘッドにキャッシュがなく、ページが読み込まれるたびに更新するようにブラウザを設定します。HTMLを閉じる前に、2番目のヘッドセクションにメタタグを再度追加する必要があります。これはMS自体からです。

http://support.microsoft.com/kb/222064/

ここでもう少し良い説明

http://www.htmlgoodies.com/beyond/reference/article.php/3472881/So-You-Dont-Want-To-Cache-Huh.htm

テストから、Expires:-1メタタグも必要です。Expiresを使用することをお勧めします:0ではなく-1。

于 2012-01-30T17:52:51.550 に答える
0

タグtype="button"を実際のアクションボタンに追加します。

type属性のデフォルト値は、現在のドキュメント互換モードによって異なります。デフォルト値はsubmitです。他の互換モードでは、デフォルト値はボタンです。BUTTON要素がフォームで送信される場合、値は現在のドキュメント互換モードによって異なります。Windows InternetExplorer8以降。type属性のデフォルト値は、現在のドキュメント互換モードによって異なります。IE8標準モードでは、デフォルト値は送信です。他の互換モードおよび以前のバージョンのWindowsInternetExplorerでは、デフォルト値はボタンです。InternetExplorer8以降。BUTTON要素がフォームで送信される場合、値は現在のドキュメント互換モードによって異なります。IE8モードでは、value属性が送信されます。他のドキュメントモードおよび以前のバージョンのInternetExplorerでは、

http://msdn.microsoft.com/en-us/library/ie/ms535211(v=vs.85).aspx

于 2013-10-21T08:29:44.963 に答える
-1

キャッシュなしなどでヘッダーを変更します。これが通常の方法です。

于 2010-05-17T12:24:04.117 に答える