Google pagespeed Insightsを使用して、nodejsWebサイトのパフォーマンスをテストしました。一部の外部ファイルでは、ブラウザのキャッシュを活用すると言っていますが、これを行う方法がわかりませんか?
ブラウザのキャッシュを利用する
静的リソースのHTTPヘッダーに有効期限または最大経過時間を設定すると、以前にダウンロードしたリソースをネットワーク経由ではなくローカルディスクからロードするようにブラウザーに指示します。次のキャッシュ可能なリソースにブラウザのキャッシュを活用します。
http://maps.googleapis.com/ …kwPPoBErK _-- SlHZI28k6jjYLyU&sensor = false(30分)
http://www.google-analytics.com/analytics.js (2時間)
誰でもこれについて私を助けてください。
1つの解決策は、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>
これの欠点は次のとおりです。
Httpd.confファイルにアクセスできない場合 rudolfvの回答 ここにはいくつかのオプションがあります。
phpスクリプトを使用して、オンザフライですべてのリクエストにGoogleアナリティクススクリプトを生成します。
$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_headersとmod_proxyを許可している場合は、.htaccessの機能を使用してください
RewriteEngine On
Header set Cache-Control "max-age=86400"
RewriteRule ^js/analytics.js http://www.google-analytics.com/analytics.js [P]