Подтвердить что ты не робот

Имеет ли смысл иметь max-age и s-maxage в HTTP-заголовке Cache-Control?

Учитывая, что max-age применяется ко всем кэшам, а s-maxage применяется только к общим кэшам (кэш прокси и шлюза)....

Имеет ли смысл использовать обе директивы на неистребимой и общедоступной странице?

Псевдокод контроллера:

w = Response();
w.setPublic();
w.setMaxAge("1 year");
w.setShareMaxAge("1 year");

return w;
4b9b3361

Ответ 1

Из Определения полей заголовка HTTP:

14.9.3 Модификации основного механизма истечения срока действия

...

S-MaxAge

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

...

Примечание. переопределяет. Таким образом, было бы разумно, если вы намерены указать другой максимальный возраст для общих кэшей по сравнению с max-age, который будет использоваться конечными пользователями.

В вашем конкретном примере они одинаковы, поэтому указание s-maxage просто не нужно.

Ответ 2

Ключевым моментом, который следует отметить в определении, является общий кэш

Из Определения полей заголовка HTTP

14.9.3 Модификации основного механизма истечения срока действия

...

S-MaxAge

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

...

Это означает, что обратные прокси-серверы, такие как лак, облачный, облачный флэш, могут иметь возраст кэша, отличный от кеша браузера. Я лично предпочел бы значение s-maxage выше maxage

В HTTP 1.1 после того, как ответ кэширован, вы не можете связаться с браузером, чтобы сделать недействительным кеш, но вы можете сообщить его CDN.