- ベストアンサー
IE以外のブラウザでキャッシュを無効にする方法
どうもこんにちは。今サーブレットで学習塾の生徒名簿管理のプログラムを模擬で作っているんですが、キャッシュの処理で困っています・・。 JSPのファイルには Calendar objCal1=Calendar.getInstance(); Calendar objCal2=Calendar.getInstance(); objCal2.set(1970,0,1,0,0,0); response.setDateHeader("Last-Modified",objCal1.getTime().getTime()); response.setDateHeader("Expires",objCal2.getTime().getTime()); response.setHeader("progma","no-cache"); response.addHeader("Cache-Control","no-store"); response.setHeader("Cache-Control","no-cache"); という記述をしています。HTMLのMETAタグにも <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> という記述をしています。これでIE(Internet Explprer)ではきちんと有効になって、たとえばログイン認証を必要とするページからログアウトした後、ブラウザの戻るボタンで戻っても前のページは表示できないようになります。 ばんざ~~~いと思ってたら・・・、それ以外のブラウザ、たとえばFireFox(2.0)、Netscape(7.1)、Opera(9.0)などでは表示されてしまいます・・・。何かこれらのブラウザでも有効にできる対策はあるのでしょうか。いろいろ調べてみたけど見つかりません。どなたかご教授をお願いいたします!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これらのブラウザには、IEエンジンではないエンジンが搭載されてます(ご存じかも)。metaタグでは、GTMか秒数で指定するのが普通です。no-cacheで指定できるのはたしかIE限定だったと思います。たとえば、flameタグのframeborderは、IEでは、数字のスイッチとYes、Noの両方が使えますが、Mozilaなどでは、数字のスイッチしか使えません。 このように、IEは独自に機能拡張をしていますので、あちこちで互換性のない機能が出てきます。 今回の場合は、no-cacheの部分を1とすることで解決できると思います。
その他の回答 (1)
- hrm_mmm
- ベストアンサー率63% (292/459)
mozilla系列ブラウザは、headerをきちんと解釈するはず。 っておもったら、スペルが違う。 response.setHeader("progma","no-cache"); ↓ response.setHeader("Pragma","no-cache");
お礼
回答ありがとうございます!!まさかこんなところにスペルミスがあったとは・・・本当に助かりました!これを直したら、とりあえずMozilla系、すなわちFireFoxとNetscapeはきちんと有効になりました。しかし、Operaではやはりだめです・・・。対応策があるのでしょうか・・・。
お礼
回答ありがとうございます!!とりあえずhrm_mmmさんから指摘していただいた、スペルミスも直し、やってみたところ、FireFoxとNetscapeではきちんと有効になりました!! って、喜んでたら・・・Operaはだめでした・・・。OperaにはOperaの独自のやり方があるんでしょうか・・・。