利用浏览器缓存外部文件

时间:2016-05-03 07:30:33

标签: browser-cache google-pagespeed

我试图让我的谷歌页面速度洞察评级为不错,但有一些我想要缓存的外部文件,任何人都知道什么是最好的处理方式?< / p>

https://s.swiftypecdn.com/cc.js (5 minutes)
https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes)
https://pagead2.googlesyndication.com/pagead/osd.js (60 minutes)
https://www.google-analytics.com/plugins/ua/linkid.js (60 minutes)
https://hey.hellobar.com/…d5837892514411fd16abbb3f71f0d400607f8f0b (2 hours)
https://www.google-analytics.com/analytics.js (2 hours)

4 个答案:

答案 0 :(得分:9)

使用不同的浏览器缓存设置复制到您的服务器并在本地或从CDN提供服务。使用cronjob或类似的东西定期更新GA脚本。

在Wordpress上有一些插件可以帮助你,就像这样:Above The Fold;他们将此功能称为 Javascript本地化

另一方面,我在服务器上使用Google Pagespeed模块,并将MapProxyDomain指令与Alternative async tracking snippet结合使用。这对我来说似乎最优雅。

这应该足以让您开始解决问题。

答案 1 :(得分:3)

set cache-control to external resources? 您无法控制从您无法控制的服务器发送的标头。

换句话说,要么自己主持一个副本,要么你无能为力。

由于

答案 2 :(得分:0)

这些文件没有解决方案。如果这些文件是CDN之类的bootstrap cdn,则可以将这些文件本地复制到主机中,但是如果这些请求是在运行时生成的,则您将无能为力。 :)

答案 3 :(得分:0)

您可以创建自己的缓存

将一些文件放置到浏览器的localStorage中(在它们第一次从远程服务器到达之后),下次您可以从本地副本中提供它们。这样,您就可以将它们存储在需要的地方-唯一需要注意的是更新,您需要一种在需要新版本时替换这些文件的方法。

如果您不想从头开始,请参考以下Javascript库:
https://www.sitepoint.com/9-javascript-libraries-working-with-local-storage/

例如,查看此 lsCache ,它看起来超级实用:

    lscache.set('greeting', 'Hello World!', 2);     // 2 minute expiration
    lscache.get('greeting');                        // returns "Hello World!"
    lscache.remove('greeting');                     // remove
    lscache.flush();                                // flush the entire cache
    lscache.flushExpired();                         // flush only expired items
相关问题