Использовать внешние кеширование браузера

Я использовал статистику google pagespeed для проверки производительности моего узла nodejs. Для некоторых внешних файлов он говорит, что использует кэширование браузера, но я не знаю, как это сделать?

Использовать кеширование браузера

Установка даты истечения срока действия или максимального возраста в заголовках 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>

Недостатками этого являются:

  • Вы будете перенаправлять много дополнительного трафика через ваши серверы.
  • Очевидно, что обновление, сделанное Google, займет больше времени для пользователя вашего сайта.

Ответ 2

Если у вас нет доступа к файлу httpd.conf как rudolfv answer, здесь есть несколько вариантов:

  • Самый простой способ - вы можете копировать его содержимое каждый день, чтобы убедиться, что вы обновлены.
  • мы можем использовать полномочия cron, есть хороший образец script, используя php опубликованный здесь
  • используйте php script для генерации аналитики google script по каждому запросу "на лету":

        $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]
    

ИЗМЕНИТЬ

  1. Существует также альтернативное решение по устранению этой проблемы, которое найдено здесь.