1

この質問は、IEキャッシングXHR呼び出しに関するものではありません。キャッシングに取り組み、XHR呼び出しから適切な結果(つまり変更)を取得しました。ただし、HTMLである私のXHR応答では、HTMLが変更されるだけでなく、HTMLが参照する画像も変更されます。HTMLは適切に変更されますが、この画像は変更されません。ページを完全に更新した場合のみです。

したがって、XHR呼び出し自体はキャッシュされませんが、リンクされたリソースはキャッシュされているように見えます。これは、XHR呼び出しに焦点を当てたソリューションが機能しないことを意味します(URLにパラメーターを追加したり、ヘッダーを設定したりするなど)。ブラウザ(SafariとFirefoxを試しました)は、リンクされたリソースでXHR呼び出しを支援するためにキャッシュを使用することを決定したようです。実際、開発ツールはXHRの転送のみを表示し、追加のファイルは表示しません。

XHR呼び出しで着信する画像をブラウザに適切にロード(要求)させるにはどうすればよいですか?

私はPHPサーバーサイド(ヘッダーも提供)とXHR呼び出しを処理するためのMooToolsを使用しています。スクリプトがキャッシュされることはありません。画像は「変更された場合」のヘッダーをチェックします(ただし、これらもキャッシュしないようにしました)。

4

1 に答える 1

1

応答でこの JavaScript コードを実行できます...

var container = document.createElement('div'),
    date = +new Date;

container.innerHTML = htmlReturnedFromXHR;

[].forEach.call(container.querySelectorAll('img[src]'), function(img) {
    img.src += '?' + date;
});

または、古いブラウザーをサポートする必要がある場合は、上記のループを次のように置き換えます...

var img = container.getElementsByTagName('img');

for (i = 0, length = img.length; i < length; i++) {
    img[i].src += '?' + date;
}

上記のアクションを実行する MooTools コード:

var container = document.createElement('div'),
    date = +new Date
    imgs = container.getElements('img');

imgs.each(function(img) {
    img.src = img.src + '?' + date;
}
于 2012-04-20T10:44:19.180 に答える