Google Pagespeed告诉我在已启用缓存的情况下利用浏览器缓存


8

Google Pagespeed Insights仍然告诉我,我必须启用浏览器缓存,但是我不了解自己缺少的内容。我正在使用cloudflare启用了优化功能。我在chrome开发人员工具中看到此HTTP标头:

缓存控制:公共,最大年龄= 86400

因此似乎已经启用了缓存!我还加了

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

在我的web.config文件中。

我不知道该怎么办 这是Google给我的错误:

在此处输入图片说明


2
为了通过该规则,您需要在〜8天后过期。
dhaupin

Answers:


6

24小时不足以满足缓存控制的要求:)从理论上讲,图像永远都不会更改,而其名称也不会更改,因此您可以轻松地将其设置为一年(如果感觉更舒适,则为一个月)。

如果用新图像替换图像,则该图像将具有新名称。picture-of-cat-on-18th-birthday.jpg不会突然成为具有相同文件名的其他图像。因此,文件名应针对其内容有所特定。

对于其他类型的资源(例如CSS和JS),您可能希望选择其他策略。您具有(经常)更改文件,并且从未/几乎没有更改过,您想要拆分它们的缓存长度:

  • 永不改变->超长缓存
  • 更改->低缓存

这是行不通的。您可以选择两者都不做,.htaccess会看到文件类型。
因此,您将其设置为长缓存,并使用后缀强制新下载(如果确实更改):

<script src="static.js" />  
<script src="changing.js?last_update=150422" />

这样,用户只有在进行实际更改后才需要重新下载它。
此技术适用于所有资源。始终以最长的缓存时间为目标。


谢谢!解决了问题。是的,时间太短,将所有内容都花了8天,所以不再给我信息了。问题是小部件!像purechat和kudobuzz,facebook插件和google +之类的东西。他们正在减慢我的网站速度,并不能很好地缓存...
euge9522

connect.facebook.net/en_US/all.js(20分钟)connect.facebook.net/it_IT/sdk.js(20分钟)apis.google.com/js/api.js(30分钟)oauth.googleusercontent.com …e:rpc:shindig.random:shindig.sha1.js?c = 2(60分钟)google-analytics.com/analytics.js(2小时)
euge9522 2015年

只要您查询src的字符串时间戳,就可以在CSS和JS文件上设置巨大的缓存filemtime()。然后,如果修改了文件,将创建一个新的uri,从而在不清除缓存和内容的情况下强制重新获取资产。可以对图像或其他任何东西做同样的事情。而且我认为Google喜欢通过网页速度的最少8天左右的缓存时间。
dhaupin 2015年

4

我看到以前的回答说24小时还不够。但查看Google文档:https : //developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#defining-optimal-cache-control-policy表示图像被缓存了1最佳缓存的一天。

短时间缓存图像很有意义,因为为了改善SEO,最好不要对图像进行指纹识别。因此,如果要更改图像,这是一个很好的权衡。

同样不是24小时后会再次加载图像(将缓存控件设置为1天时),然后它将使用e-tag并通过服务器往返和重新缓存来比较图像。

因此,问题仍然是为什么Pagespeed Insight工具不尊重Google自己的建议。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.