Заголовки HTTP, чтобы избежать кеширования: какие флаги Cache-Control, какое значение прагмы и что еще?

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

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

Во-первых, есть Cache-Control заголовок. Я нахожу различные комбинации следующих параметров:

Cache-Control: no-cache, no-store, must-revalidate, post-check=0, pre-check=0, max-age=0

Какие из них правильные? Какие из них полезны? Какие фальшивые? Мне нужно больше?

Затем, особенно в PHP, некоторые люди, как правило, добавляют это:
header("Cache-Control: private",false);

false Параметр должен избегать замены любых более ранних заголовков Cache-Control, поэтому эффективно это добавит второй заголовок HTTP, подобный этому:
Cache-Control: private
Есть ли польза от этого?

Тогда есть Expires заголовок, который обычно лучше всего установить на 0:
Expires: 0
Имеет смысл.

Наконец есть Pragma заголовок, где я также вижу противоречивые рекомендации.
Некоторые люди говорят: Pragma: no-cache
Другие рекомендуют: Pragma: public

Что лучше?

Что-нибудь еще я забыл?

0 ответов

Другие вопросы по тегам