过期标题?我如何实施它们以及它们是什么?

时间:2010-08-31 15:21:39

标签: jquery performance apache header

我试过搜索如何实现它们,但对我来说没有任何意义。它讨论了apache,Django和Lighttpd,但我不知道它们是什么。

我在网页上使用了ySlow,它告诉我需要一个过期标题。

显然它确实对性能有帮助,而这正是我真正需要的。

4 个答案:

答案 0 :(得分:1)

它与jQuery无关。您服务器的响应应设置适当的标题,如Expires,E-Tag等。

您在服务器端使用哪种语言?

如果您使用的是PHP,则发送Expires标头的示例如下:

header("Expires: Tue, 31 Aug 2010 02:30:00 GMT");

答案 1 :(得分:1)

Expires是一个HTTP头字段,不能由jQuery设置。

但您可以尝试添加 HTTP等效META element

$("head").append('<META http-equiv="Expires" content="Tue, 20 Aug 1996 14:25:27 GMT">')

但是,如果识别出这样的 HTTP等效META元素,则它取决于用户代理。更好的方法是在HTTP标头中设置它。

顺便说一句:在HTTP 1.1中,带有 max-age 参数的Cache-Control header field优先于 Expires (参见Modifications of the Basic Expiration Mechanism)。

答案 2 :(得分:1)

Expires标题位于实际页面本身之外,它是服务器添加到响应中的元数据,用于向客户端指示内容的有效期。

最终,服务器需要设置响应标头。这可以在全局范围内完成,以便从服务器发送的所有内容具有相同的值。或者,如果您正在使用服务器端平台(如ASP.NET,PHP等),那么您可以以编程方式和每个资源(页面)设置Expires标头。

然而,听起来你只需要全局设置它们 - 通常是通过服务器设置完成的。

对于Apache,请查看mod_expires

对于IIS7,take a look at this

对于其他服务器平台,只需尝试谷歌搜索“如何设置expires header {server}”,{server}是您需要的任何平台/版本。

澄清 如果浏览器先前已检索到资源(例如,myPage.html),并且该资源的有效期为24小时,则基本上会告知浏览器“如果您尝试在接下来的24小时内再次加载此页面,则可以显示您之前检索的版本,而不是从服务器请求新副本“。

对于静态页面,这可能是理想的 - 更长的到期时间可以为您的用户带来更快的页面加载(浏览器可以节省到服务器的行程),并且服务器必须处理更少的请求。

然而;对于具有长期到期的动态页面可能是有害的。想象一个只告诉时间的页面<h1>1:01PM EST</h1>(服务器生成HTML的地方)。如果expires标头设置为1h,那么当它 shoudl 为“1:45 EST”等时,浏览器可能会向用户显示“1:01 EST”。

如果您需要明确禁用浏览器缓存(不同的浏览器使用不同的默认值,即:IE8对缓存非常积极),那么您可以设置Expires=-1,这实际上是说页面会立即过期。

答案 3 :(得分:0)

Expires标头用于HTTP缓存,并指示当前版本的对象不再是当前的下一个日期/时间。浏览器和HTTP缓存可以使用它来减少源Web服务器上的负载。

缓存中还涉及其他一些标题,您还应调查ETagCache-Control

请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13