Я использовал Google Pagespeed Insights, чтобы проверить производительность моего веб-сайта на Node.js. Для некоторых внешних файлов он говорит использовать кэширование в браузере, но я не знаю, как это сделать?
Использование кэширования в браузере
Установка даты истечения срока действия или максимального возраста в заголовках HTTP для статических ресурсов указывает браузеру загружать ранее загруженные ресурсы с локального диска, а не через сеть. Используйте кэширование в браузере для следующих кэшируемых ресурсов:
http://maps.googleapis.com/…kwPPoBErK_--SlHZI28k6jjYLyU&sensor=false (30 минут)
http://www.google-analytics.com/analytics.js (2 часа)
Пожалуйста, кто-нибудь помогите мне с этим.
Одно из решений - это обратный прокси-сервер для ресурсов 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's ответ, здесь есть несколько вариантов:
использовать 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 и mod_proxy
RewriteEngine On Header set Cache-Control "max-age=86400" RewriteRule ^js/analytics.js http://www.google-analytics.com/analytics.js [P]