Node.js 利用浏览器缓存外部文件
我使用google pagespeed Insights来测试我的nodejs网站的性能。对于一些外部文件,它说要利用浏览器缓存,但我不知道如何做到这一点 利用浏览器缓存 在HTTP头中为静态资源设置过期日期或最长使用期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。 利用浏览器缓存实现以下可缓存资源: …KWPOBERK_u2;--SLHZI28K6JJYLYYU和传感器=错误(30分钟) (2小时)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小时) 任何人都可以在这方面帮助我。一个解决方案是反向代理谷歌资源。然后可以添加缓存控制和
任何人都可以在这方面帮助我。一个解决方案是反向代理谷歌资源。然后可以添加缓存控制和其他缓存头。如果您使用的是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”
这样做的缺点是:
- 您将通过服务器获得大量额外流量
- 显然,谷歌所做的更新需要更长的时间才能显示在用户的网站上
$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);
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:)还有一个缺点,即如果用户在访问另一个网站后已经缓存了分析(考虑到它的流行程度,这几乎是肯定的),您就无法利用它已经在缓存中的事实。