Как контролировать кеш браузера?

Я работаю над сайтом, где аудитории не очень комфортно с компьютерами. Жалоба, полученная часто в прошлом, касалась (незначительных) новых обновлений, хотя важные не были видны (например, дата и время менялись). Проблема: кеширование браузера и люди, не знающие, как обновить браузер. Из-за довольно большой аудитории будет невозможно объяснить это всем им.

Очень скоро мы разместим весь новый сайт в сети, поэтому я подозреваю, что это изменение приведет к тому, что браузер получит обновление … Прав ли я в этом?

Но чтобы предотвратить жалобы прошлого, я хотел бы лучше контролировать кеширование браузера пользователя.

Было бы лучше установить время кэширования (между днем ​​и одной или двумя неделями) на странице, потому что для общей информации кэширование — это хорошо, потому что оно не обновляется так часто и не так чувствительно ко времени. как наш календарь!
Но я хочу новую версию календаря в течение дня с момента последнего посещения.
-> Я бы даже рассмотрел кэширование частей страниц, если это возможно (верхний и нижний колонтитулы реже меняются, чем содержимое и т. Д.)

Какой лучший подход? Должен ли я что-то изменить в настройках сервера (насколько позволяет хостинг) и как я могу это сделать (панель управления хостингом, php.ini)?

Или я должен сделать что-то в PHP?
Или в HTML, как я нашел здесь: Контроль HTML-кеша

Или, может быть, сочетание некоторых / всего вышеперечисленного?

0

Решение

Вы можете сделать это с PHP или же HTML

PHP

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

HTML

<meta http-equiv="expires" content="Day, 01 Mon 2014 00:00:00 GMT"/>
<meta http-equiv="pragma" content="no-cache" />

убедитесь, что поместили это в ваш основной файл включения для php или html, чтобы сделать это для всех страниц. Я хотел бы использовать заголовок PHP над HTML.

3

Другие решения

Вы можете добиться этого с помощью .htaccess:

<filesMatch "\.(php|html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"Header set Pragma "no-cache"Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"</ifModule>
</filesMatch>

Это истечет кеш сервера и каждый запрос получит новые страницы

0