304 Код состояния для моих образов Azure CDN, размещенных в хранилище BLOB-объектов Azure - PullRequest
3 голосов
/ 13 февраля 2012

Мои изображения хранятся в хранилище BLOB-объектов Azure и на них ссылаются через мое веб-приложение, используя мое Azure CDN.Однако все изображения возвращают заголовок ответа 304.В идеале я не хочу, чтобы браузер возвращался в CDN для проверки правильности при каждом запросе, вместо этого браузер всегда использовал кеш.- Хорошо для жизни кеша изображений.

Обладая ограниченными знаниями в области кэширования, я понимаю, что кэш использует значение ETag для сравнения, если версия изображения при запросе совпадает.В этом случае это так, и CDN возвращает ответ 304.Но поскольку заголовок CacheControl установлен как public, max-age = 2592000, я надеюсь, что браузер будет использовать кэшированную копию изображения.У меня есть другая установка CDN, у которой есть размещенная конечная точка службы, которая возвращает ответ 200, потому что я удаляю значение ETag.

1 Ответ

1 голос
/ 05 июня 2014

Когда ETag "вызывает" 304 response => браузер отправил If-None-Match проверочный запрос на сервер.Обычно это делается после того, как max-age прошло.Вы можете найти хорошее описание этого здесь:

https://stackoverflow.com/a/500103/2550808

также стоит упомянуть, настройки браузера Firefox должны быть установлены по умолчанию: перейдите на страницу about:config и проверьте эти настройки: http://kb.mozillazine.org/Browser.cache.check_doc_frequency

Возвращаясь к вашему вопросу, возможно, что-то не так с заголовком Cache-Control, который сервер возвращает браузеру.По своему скромному личному опыту я не встречал явно public версию заголовка, скорее всего, это просто:

Cache-Control: max-age=3600, must-revalidate

В любом случае, вот довольно хорошее описание заголовков, относящихся к кешированию:

https://www.mnot.net/cache_docs/

В качестве альтернативы для непрерывной повторной проверки могут быть и другие причины:

  • Заголовки VARY в ответе сервера 200 с файлом могут повлиять на кэширование;
  • JavaScript вызывает reload для объекта местоположения, передавая TRUE для bReloadSource;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...