アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

最新のPHPニュース

IEでAjaxリクエストをキャッシュさせない方法

2007年02月06日

画像

Jaslabsにて、IEでAjaxリクエストをキャッシュさせない方法が掲載されています。

IEの場合Ajaxを用いた通信を行うと、GETメソッドの場合一度実行されるとデータがキャッシュされて、2回目以降の通信はそのキャッシュされたデータを読みに行くようになってしまいます。

そこでJaslabsでは、その対策として2つの策を提示しています。1つめは、GETメソッドを辞めてPOSTメソッドを使う方法です。POSTメソッドの場合、GETメソッドと異なりこちらは2回目以降の通信でもキャッシュされることなくサーバのデータを取得します。

2つめの策は、GETメソッドで取得する先のURLにユニークIDを付加する方法です。下記のようにここではユニークIDとしてタイムスタンプを付加しています。

var date = new Date();
var timestamp = date.getTime();
 
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleMessages;
xmlHttp.open("GET", "script.php?time=" + timestamp, true);
xmlHttp.send(null); 
 

なお、Jaslabsでは紹介されていませんが、これ以外の方法としてIf-Modified-Sinceヘッダを用いる方法があります。setRequestHeaderメソッドを使用してこのヘッダを付与するようにすると、IEでもキャッシュされることなくサーバのデータを取得することが出来ます。

xmlHttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
 

URLにユニークIDを付加するよりは、こちらのHTTPヘッダを使う方がスマートだと思います。Ajaxを用いたアプリケーションでこの問題にお困りの方は、是非試してみてはいかがでしょうか。

関連リンク

関連ニュース

この記事へのトラックバックURL

M.C.P.C.

2007年02月07日 02:12 IEのAJAXリクエストをキャッシュさせないでIEのキャッシュにも残さない方法

IEでAjaxリクエストをキャッシュさせない方法 - PHP...

続きを読む

雪羽の発火後忘失

2010年04月02日 16:56 Android web browserのajax(asynchronous request)の挙動が変だ

変だ、というのはあくまで私の想定していた動作と異なるという意...

続きを読む