Chrome не кэширует изображения / js / css - PullRequest
57 голосов
/ 04 августа 2010

Когда Chrome загружает мой веб-сайт, он проверяет сервер на наличие обновленных версий файлов, прежде чем он их показывает. (Images / Javascript / CSS) Он получает 304 с сервера, потому что я никогда не редактирую внешний javascript, css или изображения.

То, что я хочу, это отображать изображения, даже не проверяя сервер.

Вот заголовки:

Connection:keep-alive    
Date:Tue, 03 Aug 2010 21:39:32 GMT    
ETag:"2792c73-b1-48cd0909d96ed"    
Expires:Thu, 02 Sep 2010 21:39:32 GMT    
Server:Apache/Nginx/Varnish

Как мне сделать так, чтобы он не проверял сервер?

Ответы [ 6 ]

85 голосов
/ 27 апреля 2011

Как выглядят заголовки вашего запроса?

Chrome установит max-age: 0 в заголовке Cache-Control запроса , если вы нажмете Enter в строке адреса .Если вы посещаете свою страницу с помощью гиперссылки, она должна использовать кеш, как и ожидалось.

72 голосов
/ 28 января 2013

Что-то, что также меня привлекло, было ... Я проверил "отключить кеш" в инструментах разработчика.Пойди разберись.

57 голосов
/ 12 мая 2013

Вау!Я уже давно сталкивался с той же проблемой.

Я расскажу вам, почему вы столкнулись с этой проблемой.Ваши заголовки просто в порядке.Вы получаете 304 из-за того, как вы пытаетесь обновить страницу.Там в основном 3 способа -

  1. Нажмите ввод в поле адреса.Вы увидите, что chrome сначала читает файл из кэша и вообще не отправляется на сервер.

  2. Нажмите клавишу f5, чтобы проверить, не устарел ли файл (возможно, именно таквы обновляете)

  3. Нажмите Ctrl + f5, это безусловная перезагрузка всех статических ресурсов.

Так что в основном - вы должны нажать клавишу возвратавведите адресную строку.Дайте мне знать, если это работает.

28 голосов
/ 11 февраля 2016

Для меня это был самозаверяющий сертификат:

https://code.google.com/p/chromium/issues/detail?id=110649

В приведенной выше ссылке разработчик Chromium отметил ошибку: #WontFix, так как правило: «Любая ошибкас сертификатом означает, что страница не будет кэшироваться. "

Поэтому Chrome не кэширует ресурсы с серверов с самозаверяющим сертификатом.

4 голосов
/ 04 августа 2010

Если вы хотите, чтобы Chrome кэшировал ваши файлы JS / CSS - серверу необходимо установить заголовок «Cache-Control». Это должно выглядеть так:

Cache-Control: max-age = 86400 (если вы хотите кэшировать ресурсы за день).

1 голос
/ 07 июля 2017

Я полагаю, вы ищете

Cache-Control: immutable

...