我想确保通过AJAX调用请求的数据是新鲜的,而不是被缓存的。为此,我发送标题Cache-Control: no-cache
Cache-Control: no-cache
但是Cache-Control: max-age=0如果用户按下F5键,我的Chrome版本33会覆盖此标头。
Cache-Control: max-age=0
例。将test.html内容与您的网络服务器放在一起
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。
我可以抑制吗?
另一种选择是在网址后附加一个唯一的数字。
<script> var xhr = new XMLHttpRequest; xhr.open('GET', 'test.html?_=' + new Date().getTime()); //xhr.setRequestHeader('Cache-Control', 'no-cache'); xhr.send(); </script>
时间戳不是很独特,但是对于您的用例来说,它应该足够独特。