YSlow报告“没有过期日期”和“不可缓存”

时间:2011-03-29 13:49:53

标签: caching yslow

我有一个wep页面:http://uranussup.info。我跑了一个yslow测试。有很多请求(20),它说“内容不可缓存”和“没有过期日期”。我该如何解决?

2 个答案:

答案 0 :(得分:0)

短版

您需要配置服务器,使其以不同的HTTP headers为您的网站内容提供服务。

长版

来自雅虎! Best Practices for Speeding up Your Web Site

  

添加过期或缓存控制标头

     

此规则有两个方面:

     
      
  • 对于静态组件:通过设置far实现“永不过期”策略   未来Expires标题
  •   
  • 对于动态组件:使用适当的Cache-Control标头   用条件帮助浏览器   请求
  •   
     

网页设计越来越丰富   更丰富,这意味着更多的脚本,   样式表,图像和Flash中的   页。第一次来访   页面可能必须生成几个HTTP   请求,但使用Expires   你做这些组件的标题   缓存。这避免了不必要的   后续页面上的HTTP请求   观点。最常见的是过期标题   与图像一起使用,但它们应该是   用于所有组件,包括   脚本,样式表和Flash   组件。

     

浏览器(和代理)使用缓存来   减少HTTP的数量和大小   请求,加载网页   快点。 Web服务器使用Expires   在HTTP响应中的标头告诉   客户端组件可以有多长   缓存。这是一个遥远的未来   标题,告诉浏览器这个   回应在4月之前不会过时   15,2010。

Expires: Thu, 15 Apr 2010 20:00:00 GMT
     

如果您的服务器是Apache,请使用   ExpiresDefault指令设置   到期日相对于   当前的日期。这个例子了   ExpiresDefault指令设置   到期日期为10年   请求的时间。

ExpiresDefault "access plus 10 years"
     

请记住,如果你使用遥远的未来   过期标题你必须改变   每当组件的文件名   组件变化。在Yahoo!我们经常   使这一步成为构建的一部分   进程:嵌入版本号   在组件的文件名中,用于   例如,yahoo_2.0.6.js。

     

使用远期的Expires标头   仅在用户之后影响页面视图   已经访问过您的网站。它有   对HTTP的数量没有影响   用户访问您的网站时的请求   这是第一次和浏览器的   缓存是空的。因此影响   这种性能提升   取决于用户打你的频率   带有固定缓存的页面。 (一个“准备好了   缓存“已包含所有   页面中的组件。)我们测量过   这在雅虎!并找到了数量   带有固定缓存的页面视图是   75-85%。通过使用远期的Expires   标题,你增加了数量   由...缓存的组件   浏览器并在后续页面上重复使用   视图没有发送单个字节   通过用户的互联网连接。

答案 1 :(得分:0)

这应该这样做,但不确定它是“mod_expires.c”还是“mod_expires.so” - 目前这两种方式都不适合我。

<IfModule mod_expires.so>
  ExpiresActive On 
  ExpiresDefault "access plus 4 hours"
  ExpiresByType application/javascript "access plus 2 months"
  ExpiresByType application/javascript-x "access plus 2 months"
  ExpiresByType text/javascript "access plus 2 months"
  ExpiresByType image/jpg "access plus 2 month"
  ExpiresByType image/jpeg "access plus 2 month"
  ExpiresByType image/gif "access plus 2 month"
  ExpiresByType image/png "access plus 2 month"
  ExpiresByType text/css "access plus 2 months"
  ExpiresByType text/html "access plus 2 months"
  ExpiresByType text/xml "access plus 2 months"
  ExpiresByType text/plain "access plus 2 months"
  ExpiresByType image/x-icon "access plus 12 month"
  ExpiresByType image/icon "access plus 12 month"
  ExpiresByType application/x-ico "access plus 12 month"
  ExpiresByType application/ico "access plus 12 month"
</IfModule>