1

При изучении кэширования стратегий, принятых различными веб-сайтов в поисковых системах и сам Stackoverflow, я не могу не заметить тонкие различия в заголовках ответа:Понимание стратегии кэширования динамически генерируемой страницы поиска

Google Поиск

Cache-Control: private, max-age=0 
Expires: -1 

Yahoo Поиск

Cache-Control: private 
Connection: Keep-Alive 
Keep-Alive: timeout=60, max=100 

Stackoverflow Поиск

Cache-Control: private 

Там должен быть какой-то логическое объяснение за параметрами, принятыми. Может ли кто-то уяснить различия, чтобы каждый из нас мог учиться и извлекать выгоду?

ответ

1

От RFC2616 HTTP/1.1 Header Field Definitions, 14.9.1 What is Cacheable:

private 
    Indicates that all or part of the response message is intended for a single 
    user and MUST NOT be cached by a shared cache. This allows an origin server 
    to state that the specified parts of the response are intended for only one 
    user and are not a valid response for requests by other users. A private 
    (non-shared) cache MAY cache the response. 

max-age=0 означает, что он может находиться в кэше до 0 секунд. Нулевое значение будет означать, что кэширование не должно выполняться.

Expires=-1 следует игнорировать, если присутствует max-age, а -1 - недопустимая дата и должна анализироваться как значение в прошлом (значение уже истекло).

От RFC2616 HTTP/1.1 Header Field Definitions, 14.21 Expires:

Note: if a response includes a Cache-Control field with the max-age directive 
     (see section 14.9.3), that directive overrides the Expires field 

HTTP/1.1 clients and caches MUST treat other invalid date formats, especially 
including the value "0", as in the past (i.e., "already expired"). 

В Connection: Keep-AliveKeep-Alive: timeout=60, max=100 и настраивает параметры для persistent connections. Все соединения, использующие HTTP/1.1, являются постоянными, если не указано иное, но эти заголовки изменяют фактические значения таймаута вместо использования браузеров по умолчанию (которые сильно различаются).

+0

Хороший ответ. Чтобы завершить работу, можете ли вы объяснить, почему max-age = 0 настроен для Google, а Yahoo и Stackoverflow не могут его отменить? И как работает кеш, если max-age не установлен? –

+0

Yahoo (se.search.yahoo.com) отправляет мне «private, max-age = 0, no-cache». Я не знаю, почему StackOverflow не указывает max-age, он в настоящее время позволяет браузеру кэшировать страницу результатов. Спросите на Мета! – sisve