2016-05-28 19 views
0

Я читал об одном значении заголовка кеша. Чтобы проверить, что я узнал, я открыл facebook и проверил. Это заголовок ответа Cache-Control Я получаю:Значение нескольких значений в заголовке управления кешем

cache-control:private, no-cache, no-store, must-revalidate 

Я смущен, что этот заголовок на самом деле говорит, потому что он содержит 4 значения одновременно. Итак, что происходит с отправкой ресурса через сеть, если он содержит такой заголовок?

EDIT:

нет-магазин не говорит, «не хранить вообще, а не в частных не государственных кэшей», и никто кэш не говорит «yeees можно кэшировать, но убедитесь, что вы перепроверить свежести, когда ресурс запрашивается ". Частный говорит: «Вы можете хранить в частных кэшах». Он не может делать все 3 одновременно. Но, тем не менее, здесь мы вынуждены отправлять их в ответ в то же время. Похоже, есть некоторые дополнительные правила, о которых я не знаю.

+0

Прочтите спецификацию? https://greenbytes.de/tech/webdav/rfc7234.html#cache-response-directive –

+1

Я знаю, что они означают отдельно, я не знаю, что думать о них, когда их более одного. no-cache и no-store означают разные вещи и, к примеру, не могут выполняться одновременно. – sanjihan

+0

'no-cache' не говорит« вы можете кэшировать ».' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –

ответ

1

RFC 7234 является хорошим ориентиром для точного значения заголовков.

no-cache и no-store означают разные вещи и, к примеру, не могут соблюдаться одновременно.

Они абсолютно могут. Директивы являются избыточными, но не противоречивыми. no-cache:

указывает на то, что кэш не должен использовать хранимая ответ удовлетворить запрос без успешного проверки на сервере происхождения.

и no-store:

указывает на то, что кэш НЕ ДОЛЖЕН магазин какой-либо части либо этот запрос или любой ответ на него.

В no-store по существу жестче, чем no-cache, то результат будет эффективно no-store. Аналогично для других заголовков; Я считаю:

Cache-control: no-store 

было бы более простым способом получить тот же результат. Однако возможно, что заголовок, который вы видите, представляет собой комбинацию рекомендаций, а не намеренно последовательную политику.

Обратите внимание, что, как the spec says, дублируется директивы может быть недействительным:

Когда есть больше чем одно значение присутствует для данной директивы (например, два Истекает поля заголовка, множественный Cache-Control: max-age ), значение директивы считается недействительным. Кэши: рекомендуется учитывать ответы, которые имеют неверную свежесть. информация устарела.

но я не верю, что это так.

+0

Благодарим вас за подробный ответ. Частная директива указывает, что сообщение может храниться в приватных кешах, no-store указывает, что не хранить в частных или общедоступных кэшах. Что теперь? действительно запутанный – sanjihan

+0

Не совсем; 'private' указывает, что это« НЕ ДОЛЖНО храниться совместно используемым кешем ». Опять же, нет противоречия, но избыточно. – Joe

+0

Ах да, я вижу, что знаю. Еще раз спасибо. – sanjihan

-1
+0

Спасибо, что остановились. Я читал о них как о личности. Сейчас их 4, и они исключают друг друга. Например, вы не можете подчиняться «нет-хранилищу» и «кэш-кеш» в то же время, поскольку «нет-магазин» говорит «не хранить вообще», а «нет-кеш» говорит «yeees, который вы можете кэшировать, но убедитесь, что вы обновляете для freshnes, когда запрашивается ресурс ». Он не может делать оба одновременно. Это то, что меня беспокоит. – sanjihan

Смежные вопросы