Ответ 1
Используйте разные URL-адреса. Если основная точка входа на ваш сайт (например, основной файл индекса) кэшируется, то вы ввернуты... возможно, вам нужно зарегистрировать другое доменное имя?
У меня есть веб-сайт, который из-за плохо подготовленного файла apache conf дал указание пользователям кэшировать URL-адрес веб-сайта несколько лет в будущем. В результате, когда человек посещает сайт, они часто не пытаются даже запросить страницу. Браузер просто загружает HTML из кеша.
Этот веб-сайт собирается получить основное обновление, и я хотел бы, чтобы пользователи могли его видеть. Есть ли способ заставить меня фактически повторно запросить веб-страницу? Я боюсь, что для некоторых пользователей, если только они не нажимают F5, они могут видеть старую веб-страницу в течение нескольких лет.
Используйте разные URL-адреса. Если основная точка входа на ваш сайт (например, основной файл индекса) кэшируется, то вы ввернуты... возможно, вам нужно зарегистрировать другое доменное имя?
Существует несколько вариантов достижения этого Первый В разделе добавить метатег:
<meta http-equiv="pragma" content="no-cache" />
В основном браузер не будет кэшировать страницу.
Другой вариант - установить сеансы, это заставит браузер на новый сеанс каждый раз, когда он будет идти, и, таким образом, браузер получит страницу с сервера, а не кеш
<?php
session_start();
$_SESSION = array();
session_destroy();
?>
Вы можете добавить это на свой сайт на пару дней, а затем удалить. Я действительно не знаю, будет ли это делать, но, возможно, вы найдете его полезным.
Можно утверждать, что если ваше "основное обновление" всего за несколько (2 или 3) недели, вам нужно только переконфигурировать ваш apache conf сейчас (без дальнейших вещей для html - только для активов и контента, которые будут наиболее вероятно, никогда не изменится). По умолчанию кеш Firefox составляет ~ 50 МБ, и это не так много, потому что изображения также кэшируются, а на современных веб-сайтах много контента.
Не идеально - но это то, что я сделал бы - когда я не хочу или не могу изменить URL;)
Я думаю, что нет никакого способа сделать это. Если они никогда не свяжутся с вашим сыном, вам действительно нечего делать.
изменить URL-адреса каждого ресурса
Я понимаю, что этот вопрос очень старый, но у меня есть жизнеспособный ответ:
Конечно, вы можете заставить новый URL-адрес избегать общих кешей (не долговременных)...
т.е.
Однако в сценарии, подобном этому (ранее отредактированный apache.conf для длительного кэширования), поскольку вы не можете изменить домен для целей SEO, есть "сырой взлом", который вы можете использовать, что минимизирует влияние на SEO:
Скопируйте свою индексную страницу (т.е. index.php) на новую страницу (например, index_new.php) и отредактируйте httpd.conf(или эквивалент), чтобы DirectoryIndex была новой страницей. Затем просто удалите или переместите свою старую страницу, она теоретически должна всегда перенаправляться на новую страницу.
т.е. в Debian/Ubuntu:
cd /var/www
cp index.php index_new.php
sudo vim /etc/apache2/sites-enabled/000-default
<Directory /var/www/>
...
DirectoryIndex index_new.php
</Directory>
mv index.php index_old.php
sudo service apache2 restart
И там вы идете.
Поздно, но это может помочь кому-то в будущем: если у вас есть файл javascript, который не кэшируется в будущем (т.е. если у вас есть какой-либо способ запускать новые js на кэшированном сайте), добавьте некоторые js, которые будут программно очищать кеш. После того как конфигурация будет исправлена и/или обновление будет завершено, удалите очистку кеша js.
Вы можете внести все необходимые изменения внутри HTML файлов, например
<meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0" />
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Но также вы можете прямо сказать Apache, чтобы он использовал модуль mod_expires.c, и добавить пару директив в файл httpd.conf:
<IfModule mod_expires.c>
# Turn on the module.
ExpiresActive on
# Set the default expiry times.
ExpiresByType text/html "modification plus 5 seconds"
ExpiresByType text/javascript "modification plus 5 seconds"
ExpiresDefault "access plus 2 days"
</IfModule>
Таким образом, вы добавляете кеш-контроль заголовков HTTP и заканчиваете их до ответов, чтобы браузер обновил кеш через 5 секунд после того, как файл был изменен в начале, для этих файлов, и через 2 дня после доступа к нему браузер для всех других типов файлов.
Надеюсь это поможет.