XMLHttpRequest でキャッシュを無効にするリクエスト

JavaScript の中で、Shift_JIS で書かれたテキストファイルを読んであれこれしてるんだけど、ファイルを読み込んでくる function はこんな感じ。
XMLHttpRequest を使っている。

//@cc_on
function 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.1
Host: www.exsample.com
User-Agent: handPower
Pragma: no-cache
Cache-Control: no-cache
Accept: */*

とかやってたのに、パッと思いうかばないもんだな(^^;

というわけで、

//@cc_on
function 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。

トラックバック(0)

このブログ記事を参照しているブログ一覧: XMLHttpRequest でキャッシュを無効にするリクエスト

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/6192

コメントする

このブログ記事について

このページは、shinodaが2022年3月26日 21:23に書いたブログ記事です。

ひとつ前のブログ記事は「彩龍の背徳感しかないチャーシュー丼、旨っ」です。

次のブログ記事は「岩倉キャンプ場は激混みキャンプ場であった」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら