Нет кэша для некоторых 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>
Другие вопросы по тегам