@twintwin1003

Кэширование nginx на стороне клиента?

Разбираюсь с настройкой сервера nginx. Дошел до пункта кэширование, и не могу понять некоторые моменты:
1) В конфиге не указываю, что бы nginx отдавал заголовок с кэшированием на стороне клинете. Захожу на localhost -> проверяю через инструменты разработчика(Google chrome) -> сервер ответил 200 ОК
обновляю -> сервер ответил 304 Not Modified
Вопрос: почему 304? Я ведь не указывал в конфиге кэширование.
2) Вот тут вопрос больше на понимание,что такое кэширование. В моем понимании:
сервер отдал js-скрипт например -> браузер положил в кэш -> бразуер ждет время, пока кэш актуален Cache-Control:max-age=60
НО, я решил тут же изменить js-скрипт, и обновил страничку. По идее браузер же должен был проверить время актуальности кэша, если не ОК, то заново запросить, но нет он взял и скачал измененный js-скрипт, с логичным ответом сервера 200 ОК.

Выслушаю любые варианты и предложения с:
  • Вопрос задан
  • 3609 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Во-первых, все заголовки кеширования это лишь «настоятельная рекомендация». Браузер всегда может запросить любой ресурс по любому поводу.

Во-вторых, обновление страницы при помощи F5/Ctrl-R это не то же самое, что простой переход с другой страницы или из адресной строки. Когда вы жмёте «перезагрузить» браузер считает, что вам очень нужна самая свежая версия и добавляет некоторые заголовки в запрос, а также принудительно перезапрашивает закешированные данные.

Но при этом, в-третьих, в запросе указывается состояние данных в кеше браузера (Last Modified, Etag, может ещё что-нибудь) и если сервер считает, что у браузера актуальные данные, он может ответить 304, что бы не зря не перезадавать данные ещё раз.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега Системное администрирование
Любые ответы на любые вопросы
Браузер - не дурак, кэширует по собственной инициативе. Первый раз он скачал, второй раз спросил - "не поменялось ли?", сервер ответил "неа", браузер порадовался и не стал скачивать.

Если же вы поменяете контент, браузер в ответ на запрос получит снова 200 и будет вынужден закачивать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы