即使数学随机,IE8仍在缓存我的请求

时间:2010-06-09 03:35:54

标签: javascript jquery internet-explorer caching openlayers

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">

仍在缓存数据。还有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试这篇文章的答案:

Prevent IE caching

答案 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

...我老老实实地从某个地方收集了一个网站。