• ベストアンサー

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)などでは表示されてしまいます・・・。何かこれらのブラウザでも有効にできる対策はあるのでしょうか。いろいろ調べてみたけど見つかりません。どなたかご教授をお願いいたします!

  • Java
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

これらのブラウザには、IEエンジンではないエンジンが搭載されてます(ご存じかも)。metaタグでは、GTMか秒数で指定するのが普通です。no-cacheで指定できるのはたしかIE限定だったと思います。たとえば、flameタグのframeborderは、IEでは、数字のスイッチとYes、Noの両方が使えますが、Mozilaなどでは、数字のスイッチしか使えません。 このように、IEは独自に機能拡張をしていますので、あちこちで互換性のない機能が出てきます。 今回の場合は、no-cacheの部分を1とすることで解決できると思います。

参考URL:
http://www.tagindex.com/html_tag/page/meta_10.html
Sugichi28
質問者

お礼

回答ありがとうございます!!とりあえずhrm_mmmさんから指摘していただいた、スペルミスも直し、やってみたところ、FireFoxとNetscapeではきちんと有効になりました!! って、喜んでたら・・・Operaはだめでした・・・。OperaにはOperaの独自のやり方があるんでしょうか・・・。

その他の回答 (1)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

mozilla系列ブラウザは、headerをきちんと解釈するはず。 っておもったら、スペルが違う。 response.setHeader("progma","no-cache"); ↓ response.setHeader("Pragma","no-cache");

Sugichi28
質問者

お礼

回答ありがとうございます!!まさかこんなところにスペルミスがあったとは・・・本当に助かりました!これを直したら、とりあえずMozilla系、すなわちFireFoxとNetscapeはきちんと有効になりました。しかし、Operaではやはりだめです・・・。対応策があるのでしょうか・・・。

関連するQ&A

  • IEでブラウザにキャッシュをさせないようにするには?

    更新頻度の多いホームページを公開したいのですが、IEだとブラウザがキャッシュをしてしまって、常に最新の情報を表示させることができません。 <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <META EQUIV="Expires" CONTENT="-1"> これをやっても効かないのです。。 IEのホームページを見ると、IEではこのタグは無視されます、と書いてありました。。 YAHOO!などのポータルサイトは更新されるわけですから、方法はあるのだと 思うのですが、具体的にはどういった方法があるのでしょうか?

  • JSPでjava記述とhtml記述両方でキャッシュコントロールした場合

    JSPでjava記述とhtml記述両方でキャッシュコントロールした場合 表題の件について、以下に例を記載します。 (例) ・java記述部に記載 response.setHeader( "Cache-Control", "no-cache" ) ; ・html記述部ヘッダに記載 <meta http-equiv="cache-control" content="no-cache"> 上記のように、JSPでresponse.setHeaderを用いてキャッシュコントロールを行いつつ、 JSPのhtml記述部でもmetaでキャッシュコントロールを行うことに意味はあるのでしょうか? (java記述部に記載すれば、htmlヘッダには書く必要はないのでしょうか?) ご教授の程よろしくお願いします。

  • ブラウザの戻るができないようにしたい

    ページ内はHTMLファイルですが、そのページのiframe内にperlで動的ページを表示させています。 クリック自体はifream内の動的ページですが、ページのキャッシュが残っているらしく、ブラウザの戻るが有効になります。 戻るができないようにしたいのですが何か良い方法はありますか? 以下、効果はありませんでした。 ファイル1 test.html <html> <head> <title>HTML</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <ifream src="test.cgi"></ifream> </body> </html> ファイル2 test.cgi print "Content-type: text/html\n"; print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n"; print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n"; print <<EOT; <html> <head> <title>CGI</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <a href="test.cgi">sample</a> </body> </html> EOT exit;

    • ベストアンサー
    • Perl
  • 画像をキャッシュさせたくない

    CGIで動的に画像を表示するため表示した画像をキャッシュさせたくないのですが、どうすればいいのでしょうか。 他のページなどを参考に <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> をヘッダーに入れてみましたし、リダイレクトしたURLの後ろに無意味なランダム数字を入れても見ましたが、やはりキャッシュされています。 たとえキャッシュされていても無視して読み込むようなヘッダーとか何か確実に新たに読み込む方法はないでしょうか。

    • ベストアンサー
    • HTML
  • MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。

    MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。 今perlを使ってスケジュール管理を作っていますが、IEでは、ちゃんと動作します。HTMLに <HEAD> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> </HEAD> と記述し、キャッシュを無効にしてみたのですが、 どうしてもsafariだと新規でスケジュールを入力したものがカレンダーに反映されません。 これは、HTML記述では、キャッシュを無効に できないのでしょうか? 教えて下さい。

    • ベストアンサー
    • Perl
  • 動画配信サイトで動画を閲覧するとキャッシュが残りますよね?(サイトによ

    動画配信サイトで動画を閲覧するとキャッシュが残りますよね?(サイトによっては) キャッシュってブラウザやOSの仕様だそうですが、キャッシュが残らないように配信ってできないのでしょうか? <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> こういうようなタグ(?)を付ければ完全ではないにしろ抑制できますよね? これができれば、プログレッシブダウンロードの仕組みで専用サーバを使うストリーミング配信のようなことが出来るのでは?? 何をとんちんかんなことをいってるんだと思われるかもしれませんが・・・回答よろしくお願いします。

  • キャッシュを完全に消すHTML入れたのですが、・・

    私はフラッシュを作成している者です。 フラッシュをまめに修正してネットにアップしているのですが、なぜか最初にアップしたままという現象が続きました。 いろいろ調べたところキャッシュされていてそれが読み込まれている状態と気づきました。 これを解消すべく、キャッシュを完全に残さずに表示させる勉強を始めました。 下記のようなソースコードを入れることによってキャッシュされにくいという情報を入手したので入れたのですが、反応がありませんでした。 どうかキャッシュを読み込まないようにする方法を教えていただけないでしょうか? お願いします。(土下座) <META http-equiv="Pragma" content="no-cache"> <META http-equiv="Cache-Control" content="no-cache"> <META http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">

  • 3日に1回リロードさせたい

    ページの情報を更新したときに、ブラウザのキャッシュの影響でページが更新されないことがあります。 cssが読み込まれていなかったり、htmlの変更が反映されていなかったり、 そのときはF5でリロードさせることで更新を反映させています。 ユーザーが自分でリロードを実行することなく、 自動的に更新させる方法を探しました。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="-1"> この方法だとキャッシュを削除することができ、 複数のブラウザにも対応できるそうですが、 キャッシュを毎回削除してしまうと ページを開く度に重くなってしまいます。 3日に1回、更新させる、ということはできませんか? <meta http-equiv="expires" content="Sat, 15 Nov 2012 12:00:00 GMT"> を <meta http-equiv="expires" content="Sat, 18 Nov 2012 12:00:00 GMT"> <meta http-equiv="expires" content="Sat, 21 Nov 2012 12:00:00 GMT"> のように3日ごとに更新するしかないのでしょうか。

  • アップレットをキャッシュしないようにしたい

    現在、アプレットを開発中ですが、 アップレットがキャッシュされるため、うまくデバッグできません。 <META http-equiv="Pragma" content="no-cache"> <META http-equiv="Expires" content="-1"> は入れているのですが、どうしたらいいでしょうか? ブラウザをいったん閉じないとだめでしょうか? また、JAVAコンソールにsystem.out.printlnの情報がでてこないのですが、 何か設定が必要でしょうか? よろしくおねがいします。。

    • ベストアンサー
    • Java
  • ブラウザの自動更新について

    ブラウザの自動更新について質問させていただきます。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="以前の時間"> 古いキャッシュを読まずにブラウザに新しいページを読みたい時、上のブラウザごとに異なる?3種類の対応方法があるかと思いますが、これらは適切な方法でしょうか。 例えばyahooのトップページは上の方法を使わずに自動更新しているようですが、上記のmetaは埋め込まれていませんでした。また他の多くのポータルサイトもそうでした。どのように自動更新しているのでしょうか。 どのようにすれば、更新ボタンを押さずに更新できるのか、また自動更新の際、上記のmetaを使ったほうがいいのか、それともyahooのように別の方法を使ったほうがいいのか、教えていただけないでしょうか。 初心者の質問で、質問内容が乱れてしまいましたが、どうぞよろしくお願いいたします。

専門家に質問してみよう