我使用google pagespeed Insights来测试我的nodejs网站的性能。对于一些外部文件,它说利用浏览器缓存,但我不知道如何做到这一点?
利用浏览器缓存
在静态资源的HTTP标头中设置过期日期或最长期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。 利用浏览器缓存以获取以下可缓存资源:
http://maps.googleapis.com/ ... kwPPoBErK _-- SlHZI28k6jjYLyU& sensor = false(30分钟)
http://www.google-analytics.com/analytics.js(2小时)
任何人都可以帮助我。
答案 0 :(得分:5)
一种解决方案是反向代理Google资源。然后,您可以添加Cache-Control和其他缓存标头。如果您正在使用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>
缺点是:
答案 1 :(得分:3)
如果您无法以rudolfv's answer访问httpd.conf文件,则可以使用以下几种方法:
使用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);
使用.htaccess的强大功能,如果您的托管服务提供商允许mod_headers&amp; mod_proxy的
RewriteEngine On
Header set Cache-Control "max-age=86400"
RewriteRule ^js/analytics.js http://www.google-analytics.com/analytics.js [P]