2010-07-29 76 views
5

“的网页越来越 复杂与多个脚本,样式 表,图像和Flash他们。到页面的 第一次访问可能需要 几个HTTP请求装入所有 组件。通过使用Expires头 这些组件变得缓存, 避免了不必要的HTTP在随后的页面访问量要求 。过期 头是最经常与 图像相关联的,但他们可以而且应该在所有的页面组件,包括 脚本,样式表使用 ,和Flash。“在网站的过期标题中设置多少时间?

写在YSlow的

我的问题是多少时间将是一个有多个样式表,Flash标题,Javascripts,图像,PDF格式,MS Excel文件,PPT等网站的过期标题设置好?

如果我想在所有事情上设置相同的过期时间。

回答

2

如果您的页面资源(images/css/js)通常不会更改并且是静态的,您可以将expires标题设置为远远超出1年

对于页面自己它真的取决于内容。如果您的内容频繁更改,则应确保您的过期标题未设置得太大,否则您的访问者将收到过时的内容。

如果您考虑类似于SO本身的网站,则内容会频繁更改,以致页面上的expires标头非常小。从头文件看,他们看起来像是使用了60秒的最大年龄,并且在当前1分钟内有一个过期头文件。

+0

因此,如果我为任何页面设置了1年,并且我在6个月后更新了该页面,则用户将无法看到这些更改。即使他们使用Ctrl + F5来强制刷新页面。我对吗? – 2010-07-29 12:48:45

+0

对,如果页面仍然有效并且用户还没有清除浏览器缓存,那么浏览器将使用缓存的内容,直到它满足页眉缓存要求。 – 2010-07-29 12:50:22

+0

我正在为客户做一个网站,我不知道他什么时候会改变网站。所以我不应该在这种情况下设置过期标题 – 2010-07-29 12:51:09

6

我所做的是将CSS和JavaScript文件的到期时间设置为较高的值,如1或5年。当我更改样式表或JS文件时,我会更改其URL中的版本号,以防止从缓存中提供过时的文件。

看起来这是什么也是如此,太:

<link rel="stylesheet" href="http://sstatic.net/stackoverflow/all.css?v=e27c9b7474df"> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

<script src="http://sstatic.net/js/question.js?v=b05e8725a843" type="text/javascript"></script> 

所以当他们改变了样式,他们改变all.css?v=e27c9b7474dfall.css?v=some new version。该question.js JavaScript文件遵循相同的约定。但是文件名也可以工作,你可以调用你的CSS/JS文件all-1.css,然后将其更改为all-2.css等。只要URL更改,版本号的实际格式就由你决定。