Нет кэша для некоторых HTML-страниц
У меня есть код, который каждый раз заполняет HTML-файл новым содержимым, и этот файл вызывается на моем веб-сайте... но когда я изменяю содержимое файла и затем перехожу на мою страницу, на странице отображается старое содержимое и не новый. У меня просто есть 2 страницы, которые я делаю, все остальные - статика.
Как я могу просто иметь "non-cache" для этих 2 файлов?
Мой код просто так:
<?php
$fp = fopen('file.html', 'w');
fwrite($fp, $content);
fclose($fp);
?>
и на другой файл.php у меня есть
<html>
<head>...</head>
<body>
<some html>
<?php include(file.html); ?>
<some html>
</body>
</html>
Спасибо,
1 ответ
Убедитесь, что для этого файла отправлен заголовок, который указывает, что он не должен кэшироваться; заголовки, такие как:
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Fri, 20 Mar 2014 00:00:00 GMT
Если эти файлы являются файлами PHP, вы можете сделать это, добавив строку вверху:
<?php
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: Fri, 20 Mar 2014 00:00:00 GMT');
?>
Причина, по которой я использовал несколько заголовков, заключается в том, что существует несколько способов управления кешем; если вы действительно хотите убедиться, что он никогда не кэшируется, вы должны отключить все формы (таким образом).
Если это чисто HTML-файлы, вам нужно использовать магию.htaccess, как описано в этом ответе (добавьте заголовок к каждому запросу, используя htaccess).
Для ясности это будет сделано следующим образом:
- Создайте файл.htaccess в каталоге вашего файла file.html.
- Поместите следующее содержимое в этот файл.htaccess:
Код:
<files "file.html">
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Fri, 20 Mar 2014 00:00:00 GMT"
</Files>