пятница, 16 января 2015 г.

Запрет кэширования страницы

Запрет кэширования страницы на 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>

Комментариев нет:

Отправить комментарий

media запрос для планшетов

/* Smartphones (portrait and landscape) ----------- */ @ media only screen and (min-device-width: 320px ) and (max-device-width: 480px ) ...