XMLファイルをキャッシュさせない方法

概要

強力なXMLファイルのキャッシュを利用しない Tips です。

説明

Google Maps API では、手軽に XMLファイル を読み込ませることができまが、読み込んだXMLファイルはキャッシュされてしまい、通常の方法(Shift+リロードなど)では、キャッシュが解除されません。
本Tips では、URLに常に異なる引数を与え、キャッシュを利用しないを紹介します。

対応ブラウザ/ツール

ブラウザ

動作するブラウザは下記の通りです。

IE Firefox Netscape Opera Safari

ツール等

このスクリプトがそのまま使えるツールは下記の通りです。

GME

ソースと解説

ソース

//ファイル名に乱数を付加してキャッシュを利用しない
var filename = "hogehoge.xml"; //ファイル名
filename += "?rand=" + Math.random(); //乱数を付加

ファイル名(hogehoge.xml)及び変数(filename) は各環境によって異なります。

解説

常に異なるURLにすれば、ブラウザは違うファイルとみなし、キャッシュを使わずに新たにファイルを読み込みます。異なるURLにするのは簡単で、ランダムの引数(パラメータ)をURLの最後に付加するだけです。

上記ソースにて、ファイル名は hogehoge.xml?rand=0.45126197495902526 や hogehoge.xml?rand=0.1376640852805438 などのランダムな数値が付加されるようになります。 なお、xmlファイルを通常に読み込む場合、この方法で何らかの弊害が発生することはありません。

備考

サーバーサイドプログラムなどで引数がある場合は "?rand=" を "&rand"= にして下さい。また、サーバーサイドプログラム側で rand という引数を使っていないか確認して下さい。

ちなみに、rand という文字列は任意の文字(英数字及び一部記号)に変更可能です。

応用

キャッシュは必ずしも悪ではなく、何度も同じファイルを読み込まないという便利な機能です。ですので、頻繁にマップが変わらないような場合は、キャッシュする設定にしておいた方がいいです。
開発時(developer_mode などの変数で判別)にのみキャッシュするような仕組みにするといいでしょう。