【问题标题】:Expires and CDNS - YSlow Problems过期和 CDNS - YSlow 问题
【发布时间】:2014-03-29 11:55:37
【问题描述】:

首先让我提一下,我已经进行了一些挖掘,但似乎无法找到我要寻找的正确答案。

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

使用内容交付网络 (CDN)

我在“使用内容交付网络 (CDN)”方面的成绩为“F”。一个不同的SO Post 链接到 YSlow 常见问题解答 (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. 过期由文件所在的服务器设置,所以我似乎无权定义它的过期值。因此,根据我收集到的信息,我可以将这些文件携带到我的服务器上使用本地 PHP 文件并从位于我的服务器的所述 PHP 文件中缓存它,但这似乎不是最佳选择。有没有办法解决这个问题?

【问题讨论】:

    标签: performance cdn yslow


    【解决方案1】:

    简答:

    当您像这样从外部服务器加载资源时,您无法控制太多,但对于您的网站来说可能仍然没问题。使用 YSlow 之类的工具时,重要的是不要陷入所有事情的“A”级。最好了解该工具给您的提示,并据此做出决定。

    更长的答案:

    内容交付网络

    YSlow 将报告它不识别为 CDN 的任何域的较低等级。你可以add CDN hostnames,这样会体现出更好的成绩。我会添加fonts.googleapis.comajax.googleapis.com,因为它们的行为都像CDN。将其视为在您的 YSlow 副本中保存首选项。在此处添加域实际上并不会改变您的表现,它只会提高您的分数。

    标头过期

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

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

    【讨论】:

    • 谢谢,这确实证实了我的大部分搜索以及我收集到的内容。
    猜你喜欢
    • 2013-09-15
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2016-01-21
    相关资源
    最近更新 更多