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

 

Запретить кэшировать документы браузером и Proxy-серверами можно при помощи средств языка PHP, а именно функции Header(). В сети Интернет можно встретить много примеров с нижеприведенным кодом, который является !не рабочим!!. И пользоваться им не рекомендуется!!!

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

 

1 способ.

Взамен этого большого и не рабочего кода рекомендуется в качестве правильного кода в сценарии использовать всего одну строку:

Header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1

no-store – означает – приватные данные не сохранять на локальном диске. Отключает кеширование в браузерах.

no-cache – отключение кеширования для прокси-серверов.

 

2 способ.

Все тоже самое можно сделать используя .htaccess. Видя следующие строки, сервер Apache начнет всегда автоматически их добавлять на любой ответ.

# Заголовок Cache-Control
<ifmodule mod_headers.c="">
        Header set Cache-Control "no-store, no-cache";
</ifmodule>

# Заголовок Expires
<ifmodule mod_expires.c="">
        ExpiresActive On
        ExpiresDefault "now";
</ifmodule>

p.s. mod_headers.c и mod_expires.c должен быть включен на сервере.

comments powered by HyperComments
Понравился материал - нажмите, пожалуйста, на кнопку
=)