В чем разница между директивами управления кэшем: no-cache и no-store?
Директива no-cache в ответе указывает, что ответ не должен использоваться для обслуживания последующего запроса, т. Е. В кеше не должно отображаться ответ, для которого в заголовке установлена эта директива, но должен позволять серверу обслуживать запрос. Директива no-cache может содержать некоторые имена полей; в этом случае ответ может быть показан из кэша, за исключением указанных имен полей, которые должны обслуживаться с сервера. Директива no-store применяется ко всему сообщению и указывает, что кэш не должен хранить какую-либо часть ответа или любой запрос, который его запрашивал.
Я полностью в безопасности с этими директивами?
Нет. Но, в общем, используйте Cache-Control: no-cache, no-store и Pragma: no-cache, в дополнение к Expires: 0 (или достаточно позднюю дату по Гринвичу, такую как эпоха UNIX). Не HTML-типы контента, такие как pdf, текстовые документы, электронные таблицы Excel и т. Д., Часто кэшируются, даже если установлены вышеуказанные директивы управления кэшем (хотя это зависит от версии и дополнительного использования must-revalidate, pre-check = 0, post-check = 0, max-age = 0 и s-maxage = 0 на практике иногда может привести, по крайней мере, к удалению файла при закрытии браузера, в некоторых случаях из-за особенностей браузера и реализации HTTP). Кроме того, функция «Автозаполнение» позволяет браузеру кэшировать все, что пользователь вводит в поле ввода формы. Чтобы проверить это, тег формы или отдельные входные теги должны включать атрибут Autocomplete = "Off". Однако следует отметить, что этот атрибут является нестандартным (хотя он поддерживается основными браузерами), поэтому он нарушит проверку XHTML.