TLDR 即使网址中包含Math.random(),IE仍然会缓存我的请求。
所以我将数学随机添加到我的网址末尾:
var MYKMLURL = 'http://' + host + 'data/pattern?key='+ Math.random();
我还在我的函数参数中添加了数学随机:
window.setTimeout(RefreshPatternData, 1000, MYKMLLAYER);
function RefreshPatternData(layer) {
layer.loaded = false;
layer.setVisibility(true);
layer.refresh({ force: true, params: { 'key': Math.random()} });
setTimeout(RefreshPatternData, 30000, MYKMLLAYER);
}
因此请求显示为http://host/data/pattern?key=35678652545等。
每次发出请求时都会更改。
适用于Firefox& Chrome& Safari等。但是IE8仍在缓存数据而不是更新我的图层。
关于为什么会发生这种情况的任何想法?
所以我补充道:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
仍在缓存数据。还有什么想法吗?
答案 0 :(得分:2)
您可以尝试这篇文章的答案:
答案 1 :(得分:2)
我在IE上遇到了类似的问题并缓存了AJAX请求。 (为什么,上帝,你为什么要缓存一个 AJAX 请求?)其他一切工作都很好,但IE需要通过HTTP头强制转换才能缓存AJAX请求。
我早就忘记了网址,但请看: http://greenash.net.au/thoughts/2006/03/an-ie-ajax-gotcha-page-caching/
此外,为我做的HTTP标头是:
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
...我老老实实地从某个地方收集了一个网站。