Я вижу много ответов о принудительной перезагрузке кэша, рекомендуя решение, включающее саму HTML-страницу.
Но если у вас возникла ситуация, когда ваш старый веб-сайт был написан как домашняя страница index.html
, и теперь вы меняете это на что-то новое, как вы убедитесь, что возвращающийся посетитель увидит новый контент?
На старом веб-сайте index.html
использовалась индексная страница (в конфигурации nginx
), которую я теперь изменил на index.php
.Но всякий раз, когда я посещаю его из браузера, который посещал его ранее, он все равно открывает кешированную старую страницу index.html
.Новый браузер будет правильно загружать index.php
.
Один из, казалось бы, правильных ответов, который я нашел, заключался в том, чтобы nginx
указать expires -1;
для секции server {}
, что приведет к аннулированию кэша;но по какой-то причине это не сработало.
Что, конечно, должно произойти, так это то, что посетители всегда будут получать новую страницу, не выполняя явного обновления самостоятельно.
Предположительно, решение должно заключаться в том, чтобы сделать кеш недействительным через заголовки.Но как?
Изменяет все предложенные комментарии и ответы
- Как я уже говорил в первом абзаце моего ответа, эта проблема не решается путем редактирования файла индекса (например,добавление параметров для «очистки кэша»), поскольку сам индексный файл был кэширован, вот в чем проблема.
- Я нигде в своем вопросе не упомянул javascript или CSS-файлы.Опять же, это файл
index.html
, который был кэширован. - Наличие
index.html
и index.php
не создает конфликтов.Вся система работает правильно, только старые посетители, которые ранее посещали страницу назад, когда index.html
была задана в качестве страницы индекса в конфигурации сервера, все еще получают кэшированную index.html
в качестве домашней страницы, даже после того, как индекс имеетбыл изменен на index.php
.Это также очень легко доказывается тем фактом, что эта проблема все еще возникает даже после полного удаления файла index.html
.Поскольку, как только браузер кэширует файл HTML, он больше не запрашивает у сервера, что это за индексный файл, он просто показывает, что он кэшировал.
Таким образом, полный сценарий таков:
- На веб-сайте
index.html
установлено в качестве индексной страницы в конфигурации сервера - Браузер посещает веб-сайт
- Браузер кэширует домашнюю страницу
- Индексная страница вконфигурация сервера изменяется на
index.php
- Тот же браузер посещает веб-сайт
- Браузер показывает кэшированные
index.html
ранее
В номере 5. Если яЕсли бы вы посетили веб-сайт с новым браузером, он покажет содержимое новой домашней страницы, которая находится в index.php
.Итак, вопрос в том, как заставить старый браузер забыть, что он кэшировал, и загрузить новую домашнюю страницу?