Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

[PHPプロ!] IEでAjaxリクエストをキャッシュさせない方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/02/07 13:25

Jaslabsにて、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を用いたアプリケーションでこの問題にお困りの方は、是非試してみてはいかがでしょうか。(PHPプロ!

関連リンク

転載元

 PHPプロ!:最新のPHPニュース

  • LINEで送る
  • このエントリーをはてなブックマークに追加
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5