Google Pagespeed говорит мне использовать кэширование в браузере, когда кэширование уже включено


8

Google Pagespeed Insights по-прежнему говорит мне, что мне нужно включить кэширование в браузере, но я не понимаю, чего мне не хватает. Я использую cloudflare с включенной оптимизацией. Я вижу этот HTTP-заголовок в инструментах разработчика Chrome:

контроль кэша: общедоступный, max-age = 86400

поэтому кеширование уже включено! Я также добавил

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

в моем файле web.config.

Я не знаю, что еще делать. Вот ошибка, которую Google дает мне:

введите описание изображения здесь


2
Вы должны сделать ~ 8 дней для истечения срока действия, чтобы пройти это правило.
дхаупин

Ответы:


6

24 часа - это слишком мало для управления кешем :) Теоретически изображения никогда не меняются без изменения их имени, поэтому вы можете легко установить это значение на год (или месяц, если вам удобнее).

Если вы замените изображение новым изображением, оно получит новое имя. picture-of-cat-on-18th-birthday.jpgне будет внезапно другим изображением с тем же именем файла. По этой причине имена файлов должны быть несколько специфичны для их содержания.

Для других типов ресурсов, таких как CSS и JS, вы можете выбрать другую тактику. У вас есть (часто) изменяющиеся файлы, и вы никогда не меняете их, вы хотите разделить длину кэширования:

  • никогда не меняется -> очень длинный кеш
  • меняется -> низкий кеш

Это не выполнимо. Вы можете сделать их обоих или ни одного, .htaccess видит тип файла.
Из-за этого вы устанавливаете его в длинный кэш и используете постфикс, чтобы принудительно начать новую загрузку, если она действительно изменится:

<script src="static.js" />  
<script src="changing.js?last_update=150422" />

Таким образом, пользователь должен повторно загрузить его, только если вы действительно внесли изменение.
Эта техника работает на всех ресурсах. Всегда стремитесь к максимальной продолжительности кэширования.


благодарю вас! решил проблему. да, это было слишком коротко, поставил все на 8 дней, так что это не даст мне сообщение больше. проблема в виджетах! такие вещи, как purechat и kudobuzz, плагин Facebook и Google +. они замедляют мой сайт и плохо
кешируют

connect.facebook.net/en_US/all.js (20 минут) connect.facebook.net/it_IT/sdk.js (20 минут) apis.google.com/js/api.js (30 минут) oauth.googleusercontent.com … E: rpc: shindig.random: shindig.sha1.js? C = 2 (60 минут) google-analytics.com/analytics.js (2 часа)
euge9522,

Вы можете установить огромный кэш для файлов CSS и JS, если вы указали временную метку строки запроса src ..., которую вы можете делать динамически filemtime(). Затем, если файл будет изменен, будет создан новый URI, что приведет к повторному приобретению актива без очистки кэшей и прочего. Можно сделать то же самое с изображениями или что-то еще. И я думаю, что Google любит время кэширования около 8 дней минимум, чтобы передать скорость страниц.
Дхаупин

4

Я вижу, что предыдущий ответ говорит, что 24 часов недостаточно. Но заглядывая в документ Google: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#defining-optimal-cache-control-policy говорит, что изображения должны быть кэшированы для 1 день для оптимального кэширования.

Кэширование изображений на короткое время имеет смысл, потому что для улучшения SEO лучше не делать отпечатки пальцев на изображениях. Так что это хороший компромисс, если вы хотите изменить изображение.

Также не то, что через 24 часа изображения будут загружаться снова (когда вы устанавливаете кэш-контроль на 1 день), он будет использовать электронный тег и сравнивать изображения, выполняя обход сервера и повторную загрузку.

Таким образом, остается вопрос, почему инструмент оценки скорости страниц не соблюдает собственную рекомендацию Google.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.