Заголовки 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
Что лучше?
Что-нибудь еще я забыл?