JavaScript の中で、Shift_JIS で書かれたテキストファイルを読んであれこれしてるんだけど、ファイルを読み込んでくる function はこんな感じ。
XMLHttpRequest を使っている。
//@cc_onfunction getTextFile (fname) {var text = "";var ajax = new XMLHttpRequest();with (ajax) {/*@if(1) onreadystatechange @else@*/ onload /*@end@*/ =function () { readyState == 4 && status == 200 && (text = responseText); };open('GET', fname, false);overrideMimeType('text/html;charset=Shift_JIS');send(null);};return text;}
fname には、http://www.exsample.jp/data/hoge.txt のような URI を渡してやる。
ただ、この hoge.txt を更新したあとも、ひたすら古いキャッシュの内容を読み込んでくるので、更新した内容が取れないという不具合が・・・
さて、どうしたらキャッシュを読まないようにできるのか???
答えは、
setRequestHeader('Pragma', 'no-cache');setRequestHeader('Cache-Control', 'no-cache');setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT');
こんな風にリクエストヘッダにキャッシュじゃなくて生データ送ってこいと指示するだけ。
昔はよくサーバの設定を確認したりするのに、telnet で 80番ポートに接続し、
GET / HTTP/1.1Host: www.exsample.comUser-Agent: handPowerPragma: no-cacheCache-Control: no-cacheAccept: */*
とかやってたのに、パッと思いうかばないもんだな(^^;
というわけで、
//@cc_onfunction getTextFile (fname) {var text = "";var ajax = new XMLHttpRequest();with (ajax) {/*@if(1) onreadystatechange @else@*/ onload /*@end@*/ =function () { readyState == 4 && status == 200 && (text = responseText); };open('GET', fname, false);overrideMimeType('text/html;charset=Shift_JIS');setRequestHeader('Pragma', 'no-cache');setRequestHeader('Cache-Control', 'no-cache');setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT');send(null);};return text;}
という具合に修正すればOK。
コメントする