Node.js 利用浏览器缓存外部文件

Node.js 利用浏览器缓存外部文件,node.js,google-maps-api-3,express,browser-cache,pagespeed,Node.js,Google Maps Api 3,Express,Browser Cache,Pagespeed,我使用google pagespeed Insights来测试我的nodejs网站的性能。对于一些外部文件,它说要利用浏览器缓存,但我不知道如何做到这一点 利用浏览器缓存 在HTTP头中为静态资源设置过期日期或最长使用期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。 利用浏览器缓存实现以下可缓存资源: …KWPOBERK_u2;--SLHZI28K6JJYLYYU和传感器=错误(30分钟) (2小时) 任何人都可以在这方面帮助我。一个解决方案是反向代理谷歌资源。然后可以添加缓存控制和

我使用google pagespeed Insights来测试我的nodejs网站的性能。对于一些外部文件,它说要利用浏览器缓存,但我不知道如何做到这一点

利用浏览器缓存

在HTTP头中为静态资源设置过期日期或最长使用期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。 利用浏览器缓存实现以下可缓存资源:

…KWPOBERK_u2;--SLHZI28K6JJYLYYU和传感器=错误(30分钟)

(2小时)


任何人都可以在这方面帮助我。

一个解决方案是反向代理谷歌资源。然后可以添加缓存控制和其他缓存头。如果您使用的是Apache,则可以在httpd.conf文件中完成以下操作:

ProxyRemote http://www.google-analytics.com http://yourinternalproxy:yourport

<Location /analytics.js>
  ProxyPass http://www.google-analytics.com/analytics.js
  ProxyPassReverse http://www.google-analytics.com/analytics.js
  Header set Cache-Control "max-age=86400"
</Location>
ProxyRemotehttp://www.google-analytics.com http://yourinternalproxy:yourport
ProxyPasshttp://www.google-analytics.com/analytics.js
ProxyPassReversehttp://www.google-analytics.com/analytics.js
标题集缓存控制“最大年龄=86400”
这样做的缺点是:

  • 您将通过服务器获得大量额外流量
  • 显然,谷歌所做的更新需要更长的时间才能显示在用户的网站上

如果您无法访问httpd.conf文件,这里有几个选项:

  • 最简单的方法是你可以每天复制它的内容,以确保你的内容是最新的
  • 我们可以利用cron的强大功能,有一个很好的使用php的示例脚本
  • 使用php脚本动态生成每个请求的google analytics脚本:

        $context = stream_context_create(['http' => ['Content-Type' => 'text/javascript', 'enable_cache' => true, 'enable_optimistic_cache' => true, 'read_cache_expiry_seconds' => 86400,]]);      
        echo file_get_contents("http://www.google-analytics.com/analytics.js", false, $context);
    
  • 如果主机提供商允许mod_头和mod_代理,请使用.htaccess的强大功能

        RewriteEngine On        
        Header set Cache-Control "max-age=86400"        
        RewriteRule ^js/analytics.js http://www.google-analytics.com/analytics.js [P]
    

  • 具有讽刺意味的是,谷歌pagespeed抱怨从谷歌服务器下载的资源…谷歌不能将其API缓存太长时间,他们永远无法推出新版本或修复程序。。。不要把页面速度当成圣经。此外,这些文件的加载发生在他们的服务器上,而不是你的服务器上:)太长???30分钟2小时。。。那真的没用。。加载或不加载,但如果用户在那里停留超过30分钟,性能会下降。。如果他们不能把时间延长到6小时或一天,你怎么能这么说呢。。这将不允许他们推送新的更新。。你真的需要每小时更新吗?我最终从我的服务器而不是CDN/Google提供所有css和js文件。这种方法的页面速度达到100/100:)还有一个缺点,即如果用户在访问另一个网站后已经缓存了分析(考虑到它的流行程度,这几乎是肯定的),您就无法利用它已经在缓存中的事实。