Можно ли установить max-stale в заголовке ответа? - PullRequest
0 голосов
/ 24 сентября 2019

Можно ли установить max-stale в заголовке ответа для его использования запросом на стороне клиента?Документация здесь - Cache-Control: Синтаксис , в частности, раздел «Директивы ответа кеша» создает впечатление, что max-stale не является частью заголовка ответа.Используется ли это только клиентом для принятия решения о том, как долго он будет использовать устаревший ресурс, а сервер / приложение ничего не скажет?Если да, что можно установить в ответе для имитации функциональности max-stale?

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Моделирование поведения max-stale в ответе не имеет особого смысла.Сервер владеет ресурсами и понимает, как эти ресурсы меняются со временем.Сервер должен решить, насколько критичен ресурс, и если он в порядке, он будет устаревшим.Также определитесь с некоторыми разумными временными рамками для повторной проверки ресурса, чтобы клиенты большую часть времени получали свежие данные.Это балансирование на стороне сервера.Слишком строгие настройки, вы перегружаете ваш сервер запросами, а клиент - сетевым трафиком.Слишком свободные, ваши клиенты видят старое представление.

Клиент может использовать max-stale, чтобы избежать повторной проверки и получить то, что находится в кэше.Вы не хотите генерировать сетевые запросы, если это действительно не нужно.например, must-revalidate переопределяет max-stale, поэтому, если ответ имеет этот заголовок, даже если max-stale, вы попадете на исходный сервер независимо от того,Аналогично с no-cache и no-store.Таким образом, в этом смысле сервер имеет право голоса.Он может идентифицировать ресурсы, которые НЕ МОГУТ использоваться устаревшие, даже с max-stale и помечается соответствующим заголовком.

1 голос
/ 24 сентября 2019

Никакой max-stale нельзя использовать в ответе.Он предназначен для использования клиентом для переопределения значений по умолчанию в кэше.«Дай мне этот ресурс, даже если технически он немного истек, его срок годности».Он будет использоваться, если между клиентом и сервером-источником имеется сервер кэширования.

Если честно, по моему опыту, заголовки управления кэшем запросов используются редко, за исключением принудительного обновления вплоть доИсходный сервер (max-age=0), например, при «перезагрузке» с открытыми инструментами разработчика.Насколько я помню, я никогда не видел реального экземпляра max-stale.

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

Существует опция ответа stale-while-revalidate, позволяющая использовать устаревший ресурс в течение ограниченного периода времени., чтобы разрешить быструю перезагрузку страницы, пока браузер в следующий раз проверяет и загружает новую версию в фоновом режиме.Однако в настоящее время его поддержка ограничена, как показано в нижней части страницы, на которую вы ссылались.

...