2016-06-02 7 views
3

Я пытаюсь изучить некоторые основы HTTP. Я осмотрел некоторые заголовки ответа HTTP и заметил 2 вещи, которые смутили меня:ETag без заголовка Cache-Control в ответе http

  • Там не было заголовка кэш-контроля и

  • заголовок ETag присутствовал.

Как я понял ETag является то, что клиент посылает ETag через запросы в кэше, и кэш-источ- ником Etag ресурсов с сервера. Но если в ответе нет заголовка Cache-Control, то все последующие запросы выполняют повторную проверку непосредственно с сервером и полностью исключают кеш. Это дело или я чего-то не хватает? Случается ли что-то еще, когда в ответе нет заголовка управления кешем? Почему ETag присутствует даже в том случае, если все запросы будут отправляться на сервер напрямую?

ответ

3

Отсутствие заголовка управления кешем не означает, что ресурс не может быть кэширован - клиенту (т. Е. Веб-браузер) решать, как обращаться с этим неопределенным состоянием.

Кэшировать его (будь то в памяти или на диске) и использовать эту кешированную версию, только если проверка ETag представляется мне совершенно разумной.

Если вы не хотите кэшировать ресурс, вы должны явно указать это с заголовком управления кешем «max-age = 0, no-store, no-cache, must-revalidate».