文章编号: 234067 - 最后修改: 2004年12月2日 - 修订: 3.1 HOWTO:防止在 Internet Explorer 中进行缓存本页概要
本文介绍如何使用 HTTP 标题来控制 Internet Explorer 中 Web 页的缓存。 通过 Microsoft Internet Information Server (IIS),您可以在特定 Active Server Pages (ASP) 页的最开始位置,使用以下脚本代码方便地标记高度易变页或敏感页: 更多信息过期和 Expires 标题强烈建议所有 Web 服务器都使用针对所有 Web 页的过期方案。如果 Web 服务器不通过 HTTP Expires 响应标题为返回给请求客户端的每种资源提供过期信息,则这种做法是不可取的。目前,多数浏览器和中间代理都很重视此过期信息,并使用它来提高网络的通讯效率。当服务器上的特定文件需要由客户端更新时,应始终使用 Expires 标题来指定最合理的时间。如果定期更新页,则下一个更新周期将是最有效的响应。例如,假设 Internet 上的某个每日新闻页在每天早晨 5 点更新。此新闻页的 Web 服务器应返回一个带有第二天早晨 5 点这一值的 Expires 标题。这样,在该页实际更改之前,浏览器就不必再联系 Web 服务器。 预期不进行更改的页应使用约为一年的过期日期进行标记。 在许多情况下,Web 服务器在包含信息的服务器上有一个或多个随时可能更改的易变页。因此,该服务器应将这些页的 Expires 标题的值标记为“-1”。当用户在将来进行请求时,Internet Explorer 通常会通过 If-Modified-Since(如果-修改-自)条件请求联系该 Web 服务器,以获取对该页的更新。不过,该页仍会保留在磁盘缓存(“Internet 临时文件”)中,并在适当的情况下(如在使用“后退”和“前进”按钮访问导航历史时,或在浏览器处于脱机模式时)使用,而无须联系远程 Web 服务器。 Cache-Control 标题不过,有些页非常易变或者非常敏感,以至于它们不需要磁盘缓存。为解决这一问题,Internet Explorer 提供了对 HTTP 1.1 Cache-Control 标题的支持,当 HTTP 1.1 服务器指定 no-cache 值时,这可以完全防止缓存特定的 Web 资源。由于在浏览器重新联系 Web 服务器之前无法访问不在缓存中的页,因此服务器应慎用 Cache-Control 标题。在多数情况下,使用“Expires:-1”较为可取。 Pragma:No-Cache 标题遗憾的是,旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题。为了向后兼容 HTTP 1.0 服务器,Internet Explorer 对 HTTP Pragma:no-cache 标题的使用提供了特殊支持。如果客户端通过安全连接 (https://) 与服务器通讯,且服务器在响应中返回 Pragma:no-cache 标题,则 Internet Explorer 不会缓存此响应。不过请注意,Pragma:no-cache 标题不是为此而设计的。根据 HTTP 1.0 和 1.1 规范,此标题仅在请求的上下文中定义,而不是在响应的上下文中定义,它实际上适用于可能阻止某些重要请求到达目标 Web 服务器的代理服务器。对于将来的应用程序,Cache-Control 标题是控制缓存的适当手段。 HTTP-EQUIV META 标记HTML 页允许使用特殊的 HTTP-EQUIV 形式的 META 标记,它可在 HTML 文档中指定特定的 HTTP 标题。下面是一个简短的 HTML 页示例,该页同时使用了 Pragma:no-cache 和 Expires: -1:在 Internet Explorer 版本 4 或 5 中,Cache-Control META HTTP-EQUIV 标记被忽略且没有任何作用。要使用 Cache-Control,必须按照上文 Cache-Control 部分所介绍的方法,使用 HTTP 标题来指定 Cache-Control 标题。 请注意,使用标准的 HTTP 标题比使用 META 标记可取得多。META 标记通常必须出现在 HTML HEAD 部分的顶部。而且,已知 Pragma HTTP-EQUIV META 标记至少存在一个问题。有关其他信息,请参阅以下 Microsoft 知识库文章: 222064?
(http://support.microsoft.com/kb/222064/EN-US/
)
“Pragma:No-cache”标记可能无法防止页面被缓存
服务器缓存选项
当需要在非 ASP 页上使用 Cache-Control 标题时,可能有必要使用服务器配置中的选项自动添加此标题。请参阅您的服务器文档,以了解如何将 HTTP 标题添加到针对特定目录的服务器响应。例如,在 IIS 4 中,请按照下列步骤操作:
参考
有关更多信息,请参阅以下 Microsoft 知识库文章:
189409?
(http://support.microsoft.com/kb/189409/EN-US/
)
INFO:使用 IIS 4.0 控制 Web 页高速缓存
另请参见
Hypertext Transfer Protocol -- HTTP/1.1 -- Draft Revision 5(超文本传输协议 -- HTTP/1.1 -- 草案修订版 5)
(http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-rev-05.txt)
。
165150? (http://support.microsoft.com/kb/165150/EN-US/ ) How to Use Pragma:No-cache with IIS and IE 这篇文章中的信息适用于:
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 | 文章翻译
|

回到顶端
