首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Internet Explorer 9忽略没有缓存头

Internet Explorer 9忽略没有缓存头
EN

Stack Overflow用户
提问于 2011-11-23 09:12:11
回答 6查看 19.1K关注 0票数 11

我被9的缓存弄得焦头烂额。

我根据查询字符串值从perl脚本中设置了一系列cookie。这些cookie在页面上保存有关各种信息,如横幅和颜色。

我遇到的问题是,在IE9中,它总是使用缓存,而不是使用新的值。事件的顺序如下所示:

  1. 访问www.example.com/?color=blue
  2. Perl脚本设置cookie,我被重定向回www.example.com
  3. 颜色是蓝色的,一切都如预期的那样。
  4. 访问www.example.com/?color=red
  5. 曲奇集,重定向,颜色设置为红色,一切正常。
  6. 重新访问www.example.com/?color=blue
  7. Perl脚本运行,cookie是重新设置的(我已经确认了这一点)但是!IE9从缓存中提取所有资源,所以重定向,我所有的颜色都保持红色。

因此,每次我访问一个新URL时,它都会重新获得资源,但每次我访问以前访问过的URL时,它都会从缓存中检索它们。

以下元标记位于example.com中,我认为这将阻止缓存的使用:

代码语言:javascript
复制
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="EXPIRES" CONTENT="0">

无论它的价值-我也尝试过<META HTTP-EQUIV="EXPIRES" CONTENT="-1">

IE9似乎忽略了所有这些指令。到目前为止,我在浏览器中获得成功的唯一方法是使用开发人员工具,并确保手动设置为“始终从服务器刷新”。

为什么IE要忽略我的头,我如何强迫它每次检查服务器?

EN

回答 6

Stack Overflow用户

发布于 2011-12-14 18:02:16

那些不是头。它们是<meta>元素,它们是headers极其糟糕的替代品。我建议您阅读马克·诺丁汉的缓存教程,详细介绍这方面的内容,以及哪些缓存指令适合使用。

另外,忽略任何告诉您将缓存设置为private的人。这允许在浏览器中缓存-它说“这是可以缓存的,只要你不把它转发到另一个客户端”。

票数 7
EN

Stack Overflow用户

发布于 2011-12-14 17:57:14

尝试将以下内容作为Headers (而不是meta标记)发送:

代码语言:javascript
复制
Cache-Control: private, must-revalidate, max-age=0
Expires: Thu, 01 Jan 1970 00:00:00
票数 3
EN

Stack Overflow用户

发布于 2013-03-06 09:51:08

我不知道这对任何人是否有用,但我在我的电影网站(crosstastemovies.com)上也遇到了类似的问题。每当我点击“获取更多的电影”按钮(它会检索一批随机的电影来评分),IE9就会返回完全相同的页面,忽略服务器的响应.:P

为了阻止IE9这样做,我不得不调用一个随机变量。因此,我没有调用"index.php?location=rate_movies“,而是将其改为”index.php?location=rate_movies“

现在一切都好了。

干杯

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8239599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档