小编典典

强制缓存控制:在Chrome浏览器上通过XMLHttpRequest在F5重新加载时不缓存

ajax

我想确保通过AJAX调用请求的数据是新鲜的,而不是被缓存的。为此,我发送标题Cache-Control: no-cache

但是Cache-Control: max-age=0如果用户按下F5键,我的Chrome版本33会覆盖此标头。

例。将test.html内容与您的网络服务器放在一起

<script>
    var xhr = new XMLHttpRequest;
    xhr.open('GET', 'test.html');
    xhr.setRequestHeader('Cache-Control', 'no-cache');
    xhr.send();
</script>

在网络标签上的Chrome调试器中,我看到了test.html AJAX调用。状态代码200。现在按F5重新加载页面。最长寿命:0,状态码304未修改。

Firefox表现出类似的行为。只是覆盖了请求标头,它会将其修改为Cache-Control:无缓存,F5上的max-age = 0。

我可以抑制吗?


阅读 467

收藏
2020-07-26

共1个答案

小编典典

另一种选择是在网址后附加一个唯一的数字。

<script>
    var xhr = new XMLHttpRequest;
    xhr.open('GET', 'test.html?_=' + new Date().getTime());
    //xhr.setRequestHeader('Cache-Control', 'no-cache');
    xhr.send();
</script>

时间戳不是很独特,但是对于您的用例来说,它应该足够独特。

2020-07-26