停止缓存XHR响应中链接的图像

时间:2018-10-08 03:55:45

标签: javascript http caching

我正在使用XHR获得一些HTML。 HTML响应包含一个img元素,并且出于某种原因缓存了该图像。

服务器将图像与以下标头一起提供:

cache-control: no-cache, must-revalidate
content-security-policy: default-src 'self'; ...
content-type: image/png
date: Mon, 08 Oct 2018 03:41:00 GMT
expires: Sat, 26 Jul 1997 05:00:00 GMT
server: nginx (Ubuntu)
status: 200
strict-transport-security: max-age=30879000; includeSubDomains; preload
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block

XHR的用法如下:

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
        addToPage(xmlHttp.responseText);
    }
};
xmlHttp.open("GET", url, true);
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.send();

XHR响应示例:

<h1>Title</h1>
<p>Stuff</p>
<img src="/captcha-generator">

不使用XHR时,它可以按预期工作。由于某种原因,当从XHR响应中链接图像时,该图像会被缓存。

为什么要缓存图像,以及如何强制浏览器获取新图像?

我当然可以附加一个唯一的参数来破坏缓存(例如/captcha-generator?r={random-string},但我想避免这种情况。

1 个答案:

答案 0 :(得分:-1)

在“开发”模式下会出现提示。因此,如果是Google crome,请转到右上方 在角落点击costomize并控制google crome,然后在New inconginto窗口中打开 用于开发模式