アプリ版:「スタンプのみでお礼する」機能のリリースについて

jQueryの$.ajaxでPerl/CGIの出力結果を参照し、JavaScriptでそれを元に処理をしているのですが、XP/IE8環境でキャッシュが残ってしまう現象に遭遇し困っています。CGIの出力結果の時間に関係する処理なので、HTML上でタイムリーな表示にならず、とても困っています。Chrome、Firefox、Opera、Safariでは正常に動作しているのですが、IE8では動的であるCGIもキャッシュに残して参照する仕様になっているのでしょうか。

A 回答 (1件)

IEはXmlHttpRequestの結果をキャッシュするみたいですね。




・cacheオプションをfalseに設定する
 $.ajax({
  url : "http://hogehoge/ajax",
  cache : false,
  data : {...},
  ...
 });
こうすると"http://hogehoge/ajax?_=(ミリ秒単位の現在時刻)"というURLでリクエストが投げられるため、
毎回違うURLを生成することができ、キャッシュのデータは使われなくなります。

・キャッシュが使われないようにヘッダをセットする
 $.ajax({
  url : "http://hogehoge/ajax",
  data : {...},
  beforeSend : function(xhr){
   xhr.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
  },
  ...
 });
このヘッダをセットすることで、常に最新のデータを取得することができます。
    • good
    • 0
この回答へのお礼

とても具体的なご回答をいただき、ありがとうございました。深謝いたします。

お礼日時:2013/12/28 19:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!