[Web] AJAX通信をキャッシュしない方法
最近IEを利用していてAJAX通信(GET)がキャッシュされるのに困って対策を調べたので、その覚書きとして書きます。
現象
IEで非同期通信(GET)をすると、2回目以降の同URLへの通信がキャッシュさせる。
対策
1、POST通信を使う
POST通信を使えば、リクエストがキャッシュさせることはないらしい。
2、URLにユニークなリクエストパラメータを付与することで、毎回異なるURLでリクエストを送る。
こんな感じです。
http://localhost/sample.do?time=(new Date).getTime()]
[time=xxxxx]のところをJavaScriptを使って毎回ユニークにする。
3、メタタグを使う
[no-chace,expire]をメタタグに指定する。
4、リクエストヘッダ("If-Modified-Since")を利用する。
"If-Modified-Since","Tue, 01 Jun 1970 00:00:00 GMT"をリクエストヘッダに指定する。
5、jQueryの通信オプション(ifModified:false)を利用する。
こんな感じ。
$.ajax({url:"text.do",ifModified:false,success: function(){})
6、jQueryの通信オプション(cache:false)を利用する。
こんな感じ。
$.ajax({url:"text.do",cache:false,success: function(){})
他にも色々と対策方法はあると思いますが、見つかったのはこれくらい。
ブラウザによってキャッシュ対策は異なることがあるとのことですが、お客さんの要求に合ったブラウザでの対策が出来るといいですね。