Какая разница Expires и Cache-control: max-age?

Не могли бы вы рассказать мне о различиях в Expires и Cache-control: max-age?

Ответ 1

Expires был определен в спецификациях HTTP/1.0 и Cache-Control в спецификациях HTTP/1.1.

Я бы предложил определение обоих, чтобы вы обслуживали обоих, более старых клиентов, которые понимают только HTTP/1.0 и более новые.

Ответ 2

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

Поскольку вы можете указать только один из двух заголовков в файле web.config, я предлагаю перейти с заголовком Cache-Control: max-age из-за гибкости, которую он предлагает при установке относительного промежутка времени с текущей даты к дате в будущем. Вы можете в принципе задавать и забывать, по сравнению с случаем с заголовком Expires, значение которого вам нужно запомнить не реже одного раза в год. И если вы устанавливаете оба заголовка программно из своего кода, знайте, что значение заголовка Cache-Control: max-age будет иметь приоритет над заголовком Expires. Итак, что-то нужно помнить и там.

От Установка истечения срока действия и кеш-контроль: заголовки max-age для статических ресурсов в ASP.NET