locked
ブラウザの有効期限の無効が効かない。IIS7+ASP(非.NET) RRS feed

  • 質問

  • 質問させて頂きます。

    質問内容  レガシーASPにてブラウザのキャッシュを無効にしているのですが、
           ブラウザの『戻る』ボタンで画面を表示してしまうのは、なぜでしょうか。

    状況
      ①既存システム(ASP)をIIS7Webサーバ上で動作確認を行っている。
      ②ASPソースコードには、以下のオブジェクトよりNo-Cacheを設定。
         サンプル <%Response.Expires = 0
                          Response.AddHeader "Pragma","No-Cache"
                          Response.AddHeader "Cache-Control","No-Cache"  %>
       ③同一ASPをIIS 5 にて実施すると有効期限の無効化が出来る。
      ④ネットワーク環境は、ローカルでProxyサーバ等は、経由していない。
      ⑤ブラウザは、IE7を使用。

    下名としては、IIS7で、②の命令が効いていないのでは。と考えますが、
    どうでしょうか。
    他の動作については、問題なく動作しています。

    何方か、ご存知の方おられましたら、アドバイスお願い致します。
    よろしくお願い致します。



        

    • 編集済み niway 2009年7月17日 3:48
    2009年7月17日 2:28

回答

  • はじめまして。

    調査方法だけですが・・・。

    この手の問題は、ネットワークに流れる情報を捕まえて、
    ブラウザとサーバーを明確に切り分けると話が早いと思います。

    # キャプチャするツールは NetMon でも、Fiddler でも VRTA でも何でも構いません。

    もし、IIS からキャッシュを無効にするヘッダを送信していることが確認できれば、
    ブラウザに問題があるだろうということで、この場合は

    「サーバーはキャッシュを無効にするディレクティブを送信しているのに、
     クライアントキャッシュが無効にならないという IE の問題」

    とわかりますし・・・
    あるいはもし、IIS が送信しているヘッダがヘンテコなものだ、ということがわかれば、

    「IIS 7.0 (ASP on IIS7.0) では変なヘッダを送信するようになった
     (それはなぜか?仕様変更?不具合?)」

    ということになります。 

    PS.
    簡単にテストできる最小限のスクリプトがあるとこちらでも試せるので嬉しいです。

    PS2.
    テストは http://support.microsoft.com/kb/234067
    こちらと同様にしたほうが混乱しなくていいと思います。

    お役に立ちましたら幸いです。

    --------------------------
    だどさん http://keicode.com/

    2009年8月3日 17:41

すべての返信

  • niwayさん、はじめまして。フォーラムオペレーターの高橋春樹です。
    MSDNフォーラムのご利用、ありがとうございます!

    >③同一ASPをIIS 5にて実施すると有効期限の無効化が出来る。
    IIS7だと、有効期限の無効化が出来ないという事でしょうか。
    MSDNページのExpiresプロパティーの情報を見たのですが、
    どうやらResponse.Expires = 0 に設定してもページの有効期限が直ちに切れることは無いようですが、如何でしょう・・・
    Response.ExpiresAbsolute、もしくは、Expires プロパティに負の数(Response.Expires = -1)を設定すると、
    ページの有効期限がすぐに切れるようにすることができるようです。
    試してみてはどうでしょうか?

    Expires
    http://msdn.microsoft.com/ja-jp/library/cc338839.aspx

    もしかすると、開発系のお話ならばASP.netフォーラムの方が、回答を得やすいかもしれません。

    この投稿が少しでも議論の手助けになれば幸いです。

    もし、良いアドバイスがありましたら、ご投稿宜しくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年7月24日 8:56
  • マイクロソフト株式会社 高橋様
    はじめまして。
    niwayです。

    ご返信ありがとうございます。

    >③同一ASPをIIS 5にて実施すると有効期限の無効化が出来る。
    IIS7だと、有効期限の無効化が出来ないという事でしょうか。

    その通りです。IIS5ですと即座に『有効期限が切れています。』といった画面になるのですが、
    IIS7ですと画面を表示します。(再度Requestした初期画面表示ではなく、前に表示していた内容を
                        再表示しています。)

    Response.Expires = -1
    Response.ExpiresAbsolute = Now()-1 等の定義もフォーラム投稿前に試したのですが、
    制御できません。

    >もしかすると、開発系のお話ならばASP.netフォーラムの方が、回答を得やすいかもしれません。
    もう少し様子を見て、ASP.netフォーラムへ投稿したいと思います。が、
    その場合、当スレッドを移動する事は、可能でしょうか。

    よろしくお願い致します。

    2009年7月27日 1:27
  • niwayさん
    こんにちは、フォーラムオペレーターの高橋春樹です。

    >もう少し様子を見て、ASP.netフォーラムへ投稿したいと思います。が、その場合、当スレッドを移動する事は、可能でしょうか。

    新たにASP.netフォーラムへ投稿されるのでも良いですし、スレッド移動でも構いません。
    新たに投稿する場合は、相互リンクを張って頂けると大変助かります。
    スレッド移動を希望される場合は、こちらで移動処理を行うので、お知らせください。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年7月30日 2:02
  • はじめまして。

    調査方法だけですが・・・。

    この手の問題は、ネットワークに流れる情報を捕まえて、
    ブラウザとサーバーを明確に切り分けると話が早いと思います。

    # キャプチャするツールは NetMon でも、Fiddler でも VRTA でも何でも構いません。

    もし、IIS からキャッシュを無効にするヘッダを送信していることが確認できれば、
    ブラウザに問題があるだろうということで、この場合は

    「サーバーはキャッシュを無効にするディレクティブを送信しているのに、
     クライアントキャッシュが無効にならないという IE の問題」

    とわかりますし・・・
    あるいはもし、IIS が送信しているヘッダがヘンテコなものだ、ということがわかれば、

    「IIS 7.0 (ASP on IIS7.0) では変なヘッダを送信するようになった
     (それはなぜか?仕様変更?不具合?)」

    ということになります。 

    PS.
    簡単にテストできる最小限のスクリプトがあるとこちらでも試せるので嬉しいです。

    PS2.
    テストは http://support.microsoft.com/kb/234067
    こちらと同様にしたほうが混乱しなくていいと思います。

    お役に立ちましたら幸いです。

    --------------------------
    だどさん http://keicode.com/

    2009年8月3日 17:41
  • こんにちは、フォーラムオペレーターの三沢健二です。

    Keisuke Oyama さん、アドバイスありがとうございます。

    niway さん、こちらにご質問を投稿されてから少し時間が経ちましたが、その後いかがでしょうか?

    まだ疑問点が解消されていないかもしれませんが、Keisuke Oyama さんから案内いただいた内容は、問題解決のための糸口として参考になるのではと思いましたので、勝手ながら [回答としてマーク] のチェックを付けさせていただきました。
    よろしければ、その後 niway さんの方で確認された内容などを教えていただけると嬉しいです (^^)

    それではまた何かありましたら、ぜひ TechNet フォーラムをご利用ください。

    ______________________________________
    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

    2009年8月31日 8:44
    モデレータ