Подтвердить что ты не робот

Как заставить браузер обновить кешированную версию веб-страницы

У меня есть веб-сайт, который из-за плохо подготовленного файла apache conf дал указание пользователям кэшировать URL-адрес веб-сайта несколько лет в будущем. В результате, когда человек посещает сайт, они часто не пытаются даже запросить страницу. Браузер просто загружает HTML из кеша.

Этот веб-сайт собирается получить основное обновление, и я хотел бы, чтобы пользователи могли его видеть. Есть ли способ заставить меня фактически повторно запросить веб-страницу? Я боюсь, что для некоторых пользователей, если только они не нажимают F5, они могут видеть старую веб-страницу в течение нескольких лет.

4b9b3361

Ответ 1

Используйте разные URL-адреса. Если основная точка входа на ваш сайт (например, основной файл индекса) кэшируется, то вы ввернуты... возможно, вам нужно зарегистрировать другое доменное имя?

Ответ 2

Существует несколько вариантов достижения этого Первый В разделе добавить метатег:

<meta http-equiv="pragma" content="no-cache" />

В основном браузер не будет кэшировать страницу.

Другой вариант - установить сеансы, это заставит браузер на новый сеанс каждый раз, когда он будет идти, и, таким образом, браузер получит страницу с сервера, а не кеш

<?php
session_start();

$_SESSION = array();
session_destroy();

?> 

Вы можете добавить это на свой сайт на пару дней, а затем удалить. Я действительно не знаю, будет ли это делать, но, возможно, вы найдете его полезным.

Ответ 3

Можно утверждать, что если ваше "основное обновление" всего за несколько (2 или 3) недели, вам нужно только переконфигурировать ваш apache conf сейчас (без дальнейших вещей для html - только для активов и контента, которые будут наиболее вероятно, никогда не изменится). По умолчанию кеш Firefox составляет ~ 50 МБ, и это не так много, потому что изображения также кэшируются, а на современных веб-сайтах много контента.

Не идеально - но это то, что я сделал бы - когда я не хочу или не могу изменить URL;)

Ответ 4

Я думаю, что нет никакого способа сделать это. Если они никогда не свяжутся с вашим сыном, вам действительно нечего делать.

Ответ 5

изменить URL-адреса каждого ресурса

Ответ 6

Я понимаю, что этот вопрос очень старый, но у меня есть жизнеспособный ответ:

Конечно, вы можете заставить новый URL-адрес избегать общих кешей (не долговременных)...

т.е.

  • Добавить запрос в статические файлы .js/.css/.html
  • Добавить метатег pragma для no-cache
  • Переадресация на стороне сервера, отсутствие кеша, удаление файлов cookie, сеансов и т.д.

Однако в сценарии, подобном этому (ранее отредактированный 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

И там вы идете.

Ответ 7

Поздно, но это может помочь кому-то в будущем: если у вас есть файл javascript, который не кэшируется в будущем (т.е. если у вас есть какой-либо способ запускать новые js на кэшированном сайте), добавьте некоторые js, которые будут программно очищать кеш. После того как конфигурация будет исправлена ​​и/или обновление будет завершено, удалите очистку кеша js.

Ctrl + F5 в jquery для очистки кеша браузера

Ответ 8

Вы можете внести все необходимые изменения внутри 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 дня после доступа к нему браузер для всех других типов файлов.

Надеюсь это поможет.