0

Мое понимание установки Cache-Control с значением максимального возраста является то, что браузер проинструктирован кэшировать файл.браузер не реагирует с 200 (из кэша) и отправка 304 Not Modified

Что я тогда ожидаю, так это то, что если я нажму «enter» на адресной строке для той же ссылки, браузер вернет ответ 200 (из кэша).

Мой вопрос в том, почему он возвращает 304 не измененный ответ?

Как я вижу, с 200 (из кеша) браузер больше не делает соединение с Сервером для проверки файла и сразу же служит для кэширования содержимого. Но с 304, хотя браузер больше не будет загружать файл и просто попросит браузер обслуживать кешированный файл, ему все равно нужно отправить запрос для проверки свежести содержимого.

Активы здесь подаются с Amazon CloudFront CDN с ведрами Amazon S3 в качестве источника. Кэш-заголовок там (в S3) уже установлен. Это не было проблемой для всех других самообслуживаемых активов.

Спасибо за помощь!

EDIT: Я нашел это What is the difference between HTTP status code 200 (cache) vs status code 304?. Дополнительный вопрос: У меня уже есть Cache-Control набор для MaxAge = 31536000, втор-MaxAge = 2592000, нет-преобразования, общественное и до сих пор я получаю 304, сделать это нужно установить Expire также? Я мог бы кэшировать все раньше на самообслуживаемых сайтах только с помощью Cache-Control.

ответ

0

Вы ожидаете увидеть 200 с содержанием, а не 304, говоря «не изменено». Это браузер, спрашивающий, является ли контент более новым, чем то, что он кэшировал. 304 означает «нет, не тратьте свою пропускную способность, ваш контент в настоящее время». Он может сделать это с помощью нескольких методов-этага и if-modified-since.

В качестве примера можно использовать your stackoverflow avatar image. Когда я загружаю это в Chrome и смотрю на инструменты разработчика, я вижу, что он имеет ответ 304 и передает эти два заголовка:

if-modified-since:Thu, 28 Jan 2016 13:16:24 GMT 
if-none-match:"484ab25da1294b24f8d9d13afb913afd" 
Смежные вопросы