Closed sergey-s-betke closed 10 years ago
Я сейчас генерирую Expires
, max-age
, public
. Целесообразно так же добавить и s-maxage
для прокси-серверов.
Указанный параметр заголовка переопределяет max-age
и Expires
для публичного кеша.
У этого параметра есть свои минусы. Если при истечении max-age
и при недоступности сервера публичный кеш ещё отдаст контент (уже устаревший), то при наличии s-maxage
уже не отдаст - не должен.
Честно говоря, возникает желание дать возможность настроить все параметры отдельно. Потому как в некоторых конфигурациях s-maxage
лучше вообще не генерировать (чтобы хотя бы публичный кеш отвечал), где то он нужен, но - меньший, чем max-age
(если контент для одного пользователя можно отдать и старый, но для новых необходимо показать новый), и так далее.
Значения по умолчанию для всех параметров настраиваю отдельно в панели администратора. Эту задачу закрываю.
Условия кеширования из RFC 7234:
no-store
cache directive (see Section 5.2) does not appear in request or response header fields, andprivate
response directive (see Section 5.2.2.6) does not appear in the response, if the cache is shared, andExpires
header field (see Section 5.3), ormax-age
response directive (see Section 5.2.2.8), ors-maxage
response directive (see Section 5.2.2.9) and the cache is shared, orpublic
response directive (see Section 5.2.2.5).Всё достаточно ясно. Важно максимально корректно сформировать заголовки для поддержки в максимальном объёме публичного кеширования (прокси серверами, IIS + ARR и так далее), так и частного кеширования (в случае авторизации пользователя, комментирования и так далее).