2010-12-23 440 views

回答

6

通常用于防止缓存。然而,该文件可能会为您提供更好的解释:

http://download.oracle.com/docs/cd/E13158_01/alui/wci/docs103/devguide/tsk_pagelets_settingcaching_httpexpires.html

引述:

不要使用过期= 0,以防止 缓存。 Expires头由 远程服务器发送,并由Portal Server通过 发送给浏览器。 除非所有三台机器上的时间同步,否则Expires = 0标头可能会错误地返回缓存的内容。 要解决此问题,请将Expires 标头设置为明确过去的固定日期,即 。

+0

恐怕这是不正确的。请参阅http://stackoverflow.com/questions/11357430/http-expires-header-values-0-and-1以获得更好的解释。 – user123444555621 2012-12-18 05:02:47

0

设置缓存过期标题。这告诉浏览器允许它们在被重新获取之前缓存多久。

我相信0意味着它永不过期,这可能会导致各种问题。我相信单位是秒。另一方面可能意味着它不能被缓存。

5

缓存如何工作(除其他外)是您向浏览器发送一个标题,告诉它页面内容何时到期。这意味着如果您发送如下头文件:

header("Expires Sunday June 10th 2011"); // not correct timestamp 

内容在该日期之前不会“过期”。然后浏览器可以使用缓存技术从浏览器本地提供页面,而不必再次下载所有内容。

当您将过期设置为0时,它可以确保下次浏览器加载页面时,它会下载内容,从而使您获得第二个数据。但是,正如你从其他答案中看到的那样,你不应该发送0来防止缓存,而是发送一个过去的日期。

-1

一些浏览器不断重新加载样式表,JavaScript和其他seldomnly修改文件,加载一个网站时,这会导致讨厌的延迟(Safari浏览器在Mac OS就是一个例子)

告诉浏览器文件保存在缓存中的至少有一天,你可以使用 这有一个很好的副作用告诉其他浏览器,从不刷新页面,至少每天刷新一次。

2

“过期:0”表示缓存将始终将此条目视为陈旧(即,在将其返回给客户端之前,它需要先对其进行重新验证)。根据HTTP/1.1 RFC(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21)中的Expires标头的定义: “HTTP/1.1客户端和高速缓存必须像过去一样处理其他无效的日期格式,特别是包括值”0“(即,“已经过期”)。“

相关问题