Возник вопрос про запрет кэширования для браузера. Данные на некоторых сценах (страницах) с большим количеством динамических элементов (пиктограммы и т.п.) обновляются практически только по F5.
Поиски привели к следующему.
Вариант 1
Отключить кэширование в браузере
Я использую GoogleChrome, в нём нет понятия отключить кэш, только просмотр приват. Отбрасываем пока этот вариант.
Вариант 2
Запретить кэширование страницы с помощью PHP
Практически, все тоже самое, что в случае с HTML, только информацию будем выводить через header заголовки. Вот, как реализовать абсолютный запрет на кэш:
Код: Выделить всё
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: " . date("r"));
echo "<h1>", date("H:i:s"), "</h1>";
?>
Запрет на кэширование браузером и прокси-сервером
Код: Выделить всё
<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">
Запретить кэширование страницы с помощью .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>
Этот вариант тоже пока отбрасываем, весь сайт отключать от кэширования не есть хорошо.
Итого:
Для себя пока остановился на варианте внести строку
Код: Выделить всё
<meta http-equiv="Cache-Control" content="private">
Код: Выделить всё
\htdocs\templates\application.html