Запрет кэширования страницы на HTML, PHP, htaccess
Как реализовать это разными способами, с помощью PHP или HTML или .htaccess.
Запрет кэширования страницы на HTML
Сделать это можно с помощью мета тегов. Сейчас мы разберем разные варианты запрета на кэширование.
Запрет на кэширование браузером и прокси-сервером
<meta http-equiv="Cache-Control" content="no-cache">
Запрет кэширования страницы, только браузером
<meta http-equiv="Cache-Control" content="private">
Установка кэширования на определенное время, для браузера
С помощью кода ниже, мы можем сообщить браузеру, сколько хранить документ в кэше. После чего, кэш будет обновлен.
<meta http-equiv="Cache-Control" content="max-age=3600, must-revalidate">
Установка кэширования на определенное время, для прокси-сервера
Практически, то же самое, что и в предыдущем коде, только указание стоит конкретно для прокси-сервера.
<meta http-equiv="Cache-Control" content="max-age=3600, proxy-revalidate">
Запретить кэширование страницы с помощью PHP
Практически, все тоже самое, что в случае с HTML, только информацию будем выводить через header заголовки. Вот, как реализовать абсолютный запрет на кэш:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: " . date("r"));
echo "<h1>", date("H:i:s"), "</h1>";
?>
Также, можно разрешать кэшировать на определенное время. Например, разрешим кэширование только на 1 час.
<?php
/*
** Разрешаем кэширование на 1 час
*/
header("Cache-Control: public");
header("Expires: " . date("r", time() + 3600));
echo "<h1>", date("H:i:s"), "</h1>";
?>
Запретить кэширование страницы с помощью .htaccess
Для простоты реализации идеи, можно все сделать на уровне конфигураций сервера Apache. Перед этим, нам нужно убедиться в том, что необходимые модули находятся в рабочем состоянии. Открываем конфигурационный файл Apache и наблюдаем следующую картину:
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
...
AddModule mod_expires.c
AddModule mod_headers.c
Теперь в файле .htaccess, собственно запрещаем кэшировать выводимые данные. Как нам известно, .htaccess файл будет распространяться на директорию, в которой лежит, и на все субдиректории.
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>
# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On ExpiresDefault "now"
</IfModule>
Важно заметить, что полный запрет кэширования, повышает нагрузку на сервер. Поэтому, играйтесь с этим осторожно! А лучше, установите определенное время, на которое можно кэшировать документы. Например, установим кэширование на 1 час:
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On ExpiresDefault "access plus 1 hours"
</IfModule>
Как реализовать это разными способами, с помощью PHP или HTML или .htaccess.
Запрет кэширования страницы на HTML
Сделать это можно с помощью мета тегов. Сейчас мы разберем разные варианты запрета на кэширование.
Запрет на кэширование браузером и прокси-сервером
<meta http-equiv="Cache-Control" content="no-cache">
Запрет кэширования страницы, только браузером
<meta http-equiv="Cache-Control" content="private">
Установка кэширования на определенное время, для браузера
С помощью кода ниже, мы можем сообщить браузеру, сколько хранить документ в кэше. После чего, кэш будет обновлен.
<meta http-equiv="Cache-Control" content="max-age=3600, must-revalidate">
Установка кэширования на определенное время, для прокси-сервера
Практически, то же самое, что и в предыдущем коде, только указание стоит конкретно для прокси-сервера.
<meta http-equiv="Cache-Control" content="max-age=3600, proxy-revalidate">
Запретить кэширование страницы с помощью PHP
Практически, все тоже самое, что в случае с HTML, только информацию будем выводить через header заголовки. Вот, как реализовать абсолютный запрет на кэш:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: " . date("r"));
echo "<h1>", date("H:i:s"), "</h1>";
?>
Также, можно разрешать кэшировать на определенное время. Например, разрешим кэширование только на 1 час.
<?php
/*
** Разрешаем кэширование на 1 час
*/
header("Cache-Control: public");
header("Expires: " . date("r", time() + 3600));
echo "<h1>", date("H:i:s"), "</h1>";
?>
Запретить кэширование страницы с помощью .htaccess
Для простоты реализации идеи, можно все сделать на уровне конфигураций сервера Apache. Перед этим, нам нужно убедиться в том, что необходимые модули находятся в рабочем состоянии. Открываем конфигурационный файл Apache и наблюдаем следующую картину:
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
...
AddModule mod_expires.c
AddModule mod_headers.c
Теперь в файле .htaccess, собственно запрещаем кэшировать выводимые данные. Как нам известно, .htaccess файл будет распространяться на директорию, в которой лежит, и на все субдиректории.
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>
# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On ExpiresDefault "now"
</IfModule>
Важно заметить, что полный запрет кэширования, повышает нагрузку на сервер. Поэтому, играйтесь с этим осторожно! А лучше, установите определенное время, на которое можно кэшировать документы. Например, установим кэширование на 1 час:
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On ExpiresDefault "access plus 1 hours"
</IfModule>
Комментариев нет:
Отправить комментарий