YSlow建议。他们有多重要?

时间:2009-07-17 09:43:18

标签: optimization yslow http-request

所以我刚刚下载了yslow for firebug,并查看了我正在构建的网站的结果。

我看到建议,例如,为我的静态组件使用ETags,无cookie域,并添加过期标题。

我在想,好吧我可以解决这些问题但是我可以先做一些其他优化,例如缓存数据库调用或类似的结果。

我不认为这个网站会有那么多的用途来保证YSlow的建议。

我知道在你知道你需要之前你永远不应该进行优化,但我认为ETag和expires标题之类的东西肯定只会在流量非常大的网站上发挥作用。

例如,如果我编写了一个糟糕的实现,每次请求对数据库进行5次(相对较小的)调用,YSlow告诉我我的14个图像不在无cookie域中,那么哪个应该首先解决两个优化问题吗?

7 个答案:

答案 0 :(得分:5)

没有YSlow我们的.htaccess大师。但我最近建立了一个Joomla网站,并使用YSlow找到了改进的地方。您在上面询问的YSlow的两个区域 - “添加过期标题”和“配置实体标记(ETags)” - 我通过域的根目录上的.htaccess文件进行了解决。

添加过期标题

雅虎表示:“网页越来越复杂,脚本,样式表,图片和Flash就越来越多。首次访问页面可能需要多次HTTP请求来加载所有组件。使用Expires头文件这些组件变得可缓存,这避免了后续页面视图上不必要的HTTP请求。过期标头通常与图像相关联,但它们可以并且应该在所有页面组件上使用,包括脚本,样式表和Flash。“

为了解决这个问题,我发现并将以下代码块添加到我的.htaccess文件中(注意:将OPENANGLEBRACKET更改为“<”并将CLOSEDANGLEBRACKET更改为“>”):


    ########## Begin - Expires Headers
    #
    OPENANGLEBRACKET IfModule mod_expires.c CLOSEDANGLEBRACKET 
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/ico "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/html "access plus 1 day"
    ExpiresByType text/plain "access plus 1 week"
    ExpiresByType video/x-flv "access plus 1 month"
    OPENANGLEBRACKET /IfModule CLOSEDANGLEBRACKET
    #
    ########## End - Joomla! core SEF Section

配置实体标签(ETags)

雅虎表示:“实体标签(ETags)是一种机制网络服务器,浏览器使用它来确定浏览器缓存中的组件是否与原始服务器上的组件匹配。由于ETag通常使用使其成为唯一的属性来构建托管站点的特定服务器,当浏览器从一台服务器获取原始组件并稍后尝试在另一台服务器上验证该组件时,这些标签将不匹配。“

我决定删除所有Etags,它给了我A级,将其添加到我的.htaccess文件中:


    ########## Begin - Remove Etags
    #
    FileETag none
    #
    ########## End - Remove Etags

对我的.htaccess文件的这两个更改给了我这两个YSlow类别的A等级。

答案 1 :(得分:4)

YSlow很适合检查用户看到的“用户体验”。其建议是帮助使页面显示以加快加载速度。例如。 14个图像到1个图像和喷精纯粹是一个视觉的东西。该规则是因为浏览器一次只能并行下载一些图像。

我总是首先解决后端优化,因为它们可以帮助您使网站可扩展,如果它变得那么大。

答案 2 :(得分:4)

修复分析所说的导致页面浏览速度下降最慢的内容。

请记住,无论你修复YSlow抱怨什么,都很可能会在以后再次帮助你,而数据库优化将是一项持续的任务。

即,如果您将图像分割到多个域并使其无cookie,那么当您添加更多图像时,它们应该在这些域上分割(希望自动)并且不需要再次努力。

此外,Expires标头会导致服务器上的请求级别降低(因为可以缓存响应),这将加快每个人的访问

答案 3 :(得分:2)

请注意,YSlow无法看到您的后端代码,因此它只能根据浏览器与您网站的互动建议。您当然应该首先修复数据库调用。 YSlow关于多个请求的建议,gzip等非常可靠,但它永远告诉我使用内容交付网络 - 这对于一个小网站毫无意义。只是不要盲目地花费大量时间/金钱来推荐每一项建议,并且考虑到你所知道的并且YSlow没有。

答案 4 :(得分:1)

您完全正确,在应用程序代码中进行了优化,例如

  • 优化慢速数据库查询
  • 缓存经常执行的查询
  • 常用组件的组件级缓存
  • 昂贵的应用程序代码的一般速度优化
在大多数情况下,

会比YSlow建议提供更高的性能提升。

YSlow优化通常用于改善网站静态部分的性能,在进行任何调整之前,这些部分通常比动态部分的效果更好。

答案 5 :(得分:1)

不要使用Cookie和Expires作为您的静态内容。

它不仅对您有所帮助,还有助于

我在家使用较慢的互联网链接,144 Kbps。我经常将它加载到容量,下载更新或视频文件。这使得它的延迟时间可达800毫秒左右。

需要大量往返行程的网站,因为时间检查加载速度非常慢。使用Expires的网站可以快速正确加载,因为只有动态内容必须实际加载。

答案 6 :(得分:0)

后端代码通常比前端代码更快。尝试将外部资源(css背景图像,css文件和javascript文件)的数量保持在最低限度。

这将是imho最重要的优化。