IE7/Vista 中的缓存控制

IE7/Vista 中的缓存控制

我在 apache 2 网络服务器上,并为以下网站提供服务:torchbearersakron.com

除了 IE7/Vista 和 IE8/Vista 之外,缓存似乎运行良好。但在这两个系统上,有些地方不对劲,每次都要从服务器加载整个页面。

我可以在标题或元标记中做些什么来修复它吗?我做的哪些事情会破坏它?

答案1

大概自从您提出这个问题以来的 4 个月内,torchbearersakron.com 的缓存设置已经发生了变化,因为这是我从主页得到的回应:

HTTP/1.0 200 OK
Date: Fri, 12 Feb 2010 21:12:33 GMT
Server: Apache/2.2.4 (Ubuntu) mod_python/3.3.1 Python/2.5.1 PHP/5.2.3-1ubuntu6.4 mod_ssl/2.2.4 OpenSSL/0.9.8e
X-Powered-By: PHP/5.2.3-1ubuntu6.4
Set-Cookie: PHPSESSID=61d5ecec89d3d5c29d85aa1e3629b5b5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 2695
Content-Type: text/html; charset=utf-8

如果您想要使其可缓存,您可以删除标题Pragma,并将更改Expires为此页面过期的日期,然后更改Cache-Control为指定缓存页面的最大期限;例如,缓存 1 小时:

HTTP/1.0 200 OK
Date: Fri, 12 Feb 2010 21:12:33 GMT
Expires: Fri, 12 Feb 2010 22:12:33 GMT
Cache-Control: public, max-age=3600

如果你使用 apache2,请使用mod_cache为了这。

但是,如果您正确设置了缓存标头,但仍然看到 ie 未使用其缓存,请检查 ie 中的“临时 Internet 文件”设置:

  1. 从 ie 中的“工具”菜单中选择“Internet 选项”菜单项。
  2. 点击“常规”选项卡中“浏览历史记录”部分中的“设置”按钮。
  3. 选择“检查存储页面的较新版本”标题下的“自动”单选按钮。
  4. 单击“确定”,然后再次单击“确定”。

如果选择“每次我访问网页时”单选按钮而不是“自动”,则您发送什么缓存标头都无关紧要 - 每次您通过浏览器 UI 导航到您的页面时,都会向服务器发出新的请求。

还要注意的是,Vary标头还可能破坏 IE 的缓存模型(请参阅http://blogs.msdn.com/ieinternals/archive/2009/06/17/Vary-Header-Prevents-Caching-in-IE.aspx)。Vary: Accept-Encoding应该没问题。

相关内容