SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

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

  • このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加

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開発...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/980 2007/02/07 19:21

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング