让我首先提一下我已经做了一些挖掘,但似乎找不到我要找的东西的正确答案。
我正在使用一些外部资源的网站上工作:
我在“使用内容分发网络(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似乎暗示它要么不可能,要么我在本地脚本上调用我的带宽来加载(和缓存)所需的外部文件。
所以,考虑到这些事情,我正在看的是:
about:config
解决方案。答案 0 :(得分:39)
简短回答:
当您从这样的外部服务器加载资源时,您无法控制太多,但它可能仍适用于您的网站。当使用像YSlow这样的工具时,重要的是不要陷入所有事情的“A”等级。最好理解工具给你的提示,并做出相应的决定。
更长的答案:
内容分发网络
YSlow将报告其未被识别为CDN的任何域的较低等级。你可以add CDN hostnames,然后它会反映更好的成绩。我会添加fonts.googleapis.com
和ajax.googleapis.com
,因为它们都像CDN一样。可以将其视为在YSlow副本中保存首选项。在这里添加域实际上并不会改变您的性能,只会提高您的分数。
过期标题
您无法控制从其他网站加载的内容的过期标头。您可以考虑的选项:
.htaccess
中显示的far-futures expires标头。这将为您提供更好的YSlow等级,但如果您的服务器比CDN慢,实际性能可能会更差。 (见SO question)