- PR -

キャッシュの制御

1
投稿者投稿内容
ume
ベテラン
会議室デビュー日: 2001/09/19
投稿数: 55
投稿日時: 2002-04-24 22:29
お世話になります。
Servlet+JSPで開発しているのですが
IEのキャッシュ機能が原因だと思われる現象に悩まされています。

ServletクラスAのdoGetメソッドの中で、別のServletクラスBへsendRedirectする処理を行っています。
このとき、1回目の処理ではBのdoGetが実行されるのですが,
2回目以降の処理では、BのdoGetは実行されず、1回目で表示された画面がそのまま表示されてしまいます。
(そして、ブラウザで「更新」をかけると正しい画面が表示されます。)
ブラウザを閉じてやり直すと、同じように1回目だけBのdoGetが実行されます。

キャッシュへの対応としては doGetメソッドで
HttpServletResponse.setHeader("Pragma", "no-cache");
の指定をしています。

原因・対応策など何かアドバイスをいただければと思います。
よろしくお願いします。

使用しているブラウザはIE5.00です。

[ メッセージ編集済み 編集者: ume 編集日時 2002-04-25 14:00 ]
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-04-24 23:13
Apacheの設定方法ならこれが参考になるかも。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=706&forum=12
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2002-04-25 08:56
キャッシュを無効にする為のレスポンスヘッダは、
"Pragma","no-cache"
に加えて
"Cache-Control","no-cache"
も一緒にセットしてやると解消するかもしれません。

ちなみに"Pragma"ヘッダはHTTP1.0の場合のみ有効で、HTTP1.1以降では
上記の"Cache-Control"を使用する必要があるようです。

参考文献
「core Servlets and Java Server Pages(SOFTBANK)」 第7章
ume
ベテラン
会議室デビュー日: 2001/09/19
投稿数: 55
投稿日時: 2002-04-25 13:58
ご回答いただきありがとうございました。
"Cache-Control","no-cache"
の設定を追加することで解決しました。

とても助かりました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)