Назад | Перейти на главную страницу

Кешируются изображения или нет?

Я немного озадачен отладкой обстоятельств кеширования в ландшафте Apache (веб-сервер) и Nginx (обратный прокси):

Я пытаюсь понять, правильно ли кешируются изображения или нет.

Заголовок изображения от devtools выглядит как:

Диагностика с помощью Webpagetest выглядит как:

Но devtools показывает, например, изображения будут кэшироваться, например (правый столбец):

Можно ли сказать что-то определенное, например «да, изображения правильно кешируются» или «нет, изображения не кешируются»? Или «недостаточно данных»?

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

Вы не определяете никаких элементов управления кешем в своих заголовках ответов. В соответствии с RFC 7231, 4.3.1:

Ответ на запрос GET кэшируется; кеш МОЖЕТ использовать его для удовлетворения последующих запросов GET и HEAD, если иное не указано в Cache-Control поле заголовка (Раздел 5.2 [RFC7234]).

Вы могли бы использовать no-cache чтобы указать, что браузер не должен кэшировать изображения или, например, max-age=2592000 чтобы указать, что их можно кэшировать на месяц. Есть также Expires для указания даты / времени, после которых ответ считается устаревшим.

Поскольку нет специального контроля для кеша, а спецификация HTTP / 1.1 не определяет поведение кеширования по умолчанию, браузеры могут кэшировать ваши изображения по своему усмотрению. От Ильи Григорика HTTP-кеширование:

Все HTTP-запросы, которые делает браузер, сначала направляются в кеш браузера, чтобы проверить, существует ли действительный кэшированный ответ, который можно использовать для выполнения запроса. Если есть совпадение, ответ считывается из кеша, что устраняет как задержку в сети, так и затраты на передачу данных.