2010-06-09 88 views
3

TLDR即使使用URL中包含的Math.random(),IE仍然缓存我的请求。即使使用mathrandom,IE8仍然缓存我的请求


所以我加入数学随机到我的网址的结尾:

var MYKMLURL = 'http://' + host + 'data/pattern?key='+ Math.random(); 

我还添加了数学随机到我的功能PARAM:

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

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

+1

哦,我以前见过这个。对于缓存来说,IE是braindead,即使服务器另有说明,也会将所有内容缓存在视图中。这需要一些神奇的HTTP头来说服它否则... – Thanatos 2010-06-09 03:38:52

+0

我有同样的问题。元标记在IE8中不起作用。我只能使用F12开发人员工具中的选项禁用客户端上的缓存。 – 2013-04-17 11:18:52

回答

2

你可以尝试回答这个帖子:

Prevent IE caching

+0

我有一个搜索SO没有找到这个问题感谢您的链接:) – Sphvn 2010-06-09 03:52:00

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 

...我坦白地收集断网站的某处。

相关问题