IEでのAjaxリクエスト(GET)のキャッシュ

IEで同じURLへ同じパラメータのGETのAjaxリクエストを投げても、結果がキャッシュされてしまいます。回避策としてとりあえず以下の3つが考えられます。

  • POSTリクエストに変更する
  • パラメータにタイムスタンプなどリクエスト毎に変動するものを含める
// sample using prototype.js

function get_timestamp() {
        var date = new Date();
        return date.getTime();
}

function ajax_request() {
        new Ajax.Updater(
                { success : 'rewrite_area' },
                '/hoge/foo/var',
                { method : 'get',
                  parameters : 'timestamp=' + get_timestamp() + '&something=updated'
                }
        );
}
  • リクエストのHTTPヘッダに「If-Modified-Since」を設定する
        new Ajax.Updater(
                { success : 'rewrite_area' },
                '/hoge/foo/var',
                { method : 'get',
                  parameters : 'something=updated',
                  requestHeaders:['If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT']
                }
        );

普通にPOSTにするのがいいかなと思います。