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ニュース
この記事は参考になりましたか?
- この記事の著者
-
PHPプロ!(PHPプロ!)
「PHPプロ!」は、アシアル株式会社が運営するPHP開発者のためのポータル&コミュニティサイトです。同サイトでは、PHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座、PHP中級者のためのTIPSメーリングリスト、中・上級者向けの技術ノウハウ満載のPHPプロ!マガジンの提供など、PHP開発...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です