过期和CDNS - YSlow问题

时间:2014-02-26 14:55:06

标签: performance cdn yslow

让我首先提一下我已经做了一些挖掘,但似乎找不到我要找的东西的正确答案。

我正在使用一些外部资源的网站上工作:

使用内容分发网络(CDN)

我在“使用内容分发网络(CDN)”上获得“F”等级。与YSlow常见问题解答(SO Post)的不同direct link链接,但这似乎表明我需要在浏览器上定义我的CDN,这对我来说似乎是一个快速解决方案,但这并不能解决其他浏览器和/或设备上的问题。

添加过期标题

至于“添加过期标题”等级,我得到了E.问题是,这就是我得到的:

There are 3 static components without a far-future expiration date.

(2014/2/26) http://fonts.googleapis.com/css?...
(2014/2/26) http://www.google-analytics.com/analytics.js
(2014/2/26) http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js

我怎么去纠正这个?我的本地文件由我的.htaccess处理,如下所示:

AddType image/x-icon .ico

ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/ico "access plus 1 year"
ExpiresDefault "access plus 7 days"

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
    # access plus 1 year
    Header set Cache-Control "max-age=31536000"
</FilesMatch>

SO post似乎暗示它要么不可能,要么我在本地脚本上调用我的带宽来加载(和缓存)所需的外部文件。

所以,考虑到这些事情,我正在看的是:

  1. 外部资源应该是CDN,但YSlow会读取我的本地偏好,这些偏好会因用户而异,因此我需要替代YSlow官方网站提出的about:config解决方案。
  2. Expires由文件所在的服务器设置,所以我似乎无权定义它的到期值。所以,从我收集的内容中,我可以将这些文件传送到我的服务器上使用本地PHP文件并从位于我的服务器的所述PHP文件中缓存它,但这似乎不是最佳的。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:39)

简短回答:

当您从这样的外部服务器加载资源时,您无法控制太多,但它可能仍适用于您的网站。当使用像YSlow这样的工具时,重要的是不要陷入所有事情的“A”等级。最好理解工具给你的提示,并做出相应的决定。

更长的答案:

内容分发网络

YSlow将报告其未被识别为CDN的任何域的较低等级。你可以add CDN hostnames,然后它会反映更好的成绩。我会添加fonts.googleapis.comajax.googleapis.com,因为它们都像CDN一样。可以将其视为在YSlow副本中保存首选项。在这里添加域实际上并不会改变您的性能,只会提高您的分数。

过期标题

您无法控制从其他网站加载的内容的过期标头。您可以考虑的选项:

  1. 继续使用外部网站;在这种情况下,这些表现非常好,你的表现可能会非常好。只要忽略YSlow给你的低等级。
  2. 在本地托管您的字体和jQuery文件,然后设置您在.htaccess中显示的far-futures expires标头。这将为您提供更好的YSlow等级,但如果您的服务器比CDN慢,实际性能可能会更差。 (见SO question
  3. 使用外部网站但调整您的网址;在jQuery的情况下,如果您指定更多版本级别(1.8.0而不是1.8),您将获得远期未来的过期标题(请参阅此SO question
相关问题