最新のPHPニュース
IEでAjaxリクエストをキャッシュさせない方法
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
>> ニュースの一覧へ戻る





