Как сделать так, чтобы предыдущие посетители не видели старую страницу HTML? - PullRequest
0 голосов
/ 14 ноября 2018

Я вижу много ответов о принудительной перезагрузке кэша, рекомендуя решение, включающее саму HTML-страницу.

Но если у вас возникла ситуация, когда ваш старый веб-сайт был написан как домашняя страница index.html, и теперь вы меняете это на что-то новое, как вы убедитесь, что возвращающийся посетитель увидит новый контент?

На старом веб-сайте index.html использовалась индексная страница (в конфигурации nginx), которую я теперь изменил на index.php.Но всякий раз, когда я посещаю его из браузера, который посещал его ранее, он все равно открывает кешированную старую страницу index.html.Новый браузер будет правильно загружать index.php.

Один из, казалось бы, правильных ответов, который я нашел, заключался в том, чтобы nginx указать expires -1; для секции server {}, что приведет к аннулированию кэша;но по какой-то причине это не сработало.

Что, конечно, должно произойти, так это то, что посетители всегда будут получать новую страницу, не выполняя явного обновления самостоятельно.

Предположительно, решение должно заключаться в том, чтобы сделать кеш недействительным через заголовки.Но как?

Изменяет все предложенные комментарии и ответы

  1. Как я уже говорил в первом абзаце моего ответа, эта проблема не решается путем редактирования файла индекса (например,добавление параметров для «очистки кэша»), поскольку сам индексный файл был кэширован, вот в чем проблема.
  2. Я нигде в своем вопросе не упомянул javascript или CSS-файлы.Опять же, это файл index.html, который был кэширован.
  3. Наличие index.html и index.php не создает конфликтов.Вся система работает правильно, только старые посетители, которые ранее посещали страницу назад, когда index.html была задана в качестве страницы индекса в конфигурации сервера, все еще получают кэшированную index.html в качестве домашней страницы, даже после того, как индекс имеетбыл изменен на index.php.Это также очень легко доказывается тем фактом, что эта проблема все еще возникает даже после полного удаления файла index.html.Поскольку, как только браузер кэширует файл HTML, он больше не запрашивает у сервера, что это за индексный файл, он просто показывает, что он кэшировал.

Таким образом, полный сценарий таков:

  1. На веб-сайте index.html установлено в качестве индексной страницы в конфигурации сервера
  2. Браузер посещает веб-сайт
  3. Браузер кэширует домашнюю страницу
  4. Индексная страница вконфигурация сервера изменяется на index.php
  5. Тот же браузер посещает веб-сайт
  6. Браузер показывает кэшированные index.html ранее

В номере 5. Если яЕсли бы вы посетили веб-сайт с новым браузером, он покажет содержимое новой домашней страницы, которая находится в index.php.Итак, вопрос в том, как заставить старый браузер забыть, что он кэшировал, и загрузить новую домашнюю страницу?

1 Ответ

0 голосов
/ 14 ноября 2018

Если я правильно понял ваш вопрос, я считаю, что вы ищете что-то, что называется очистка кэша . Это означает, что вы по существу добавляете фантомную / призрачную строку в соответствующие файлы CSS / JS. Под релевантными я подразумеваю файлы, в которые вы ожидаете внести изменения с течением времени.

Помните, что кэширование - это полезная функция для пользователя, поскольку она ускоряет работу вашего сайта после того, как пользователь однажды загрузил контент. Поэтому вы должны тщательно продумать, к каким файлам вы хотите добавить кэш-очистку. Fx. нет необходимости добавлять кеш статических библиотек, в которые вы не будете вносить изменения в будущем.

Пример очистки кэша может быть следующим:

<script src="/js/example.js<?php echo '?'.date('Y-m-d H:i:s'); ?>" type="text/javascript"></script>

<link href="/css/example.css<?php echo '?'.date('Y-m-d H:i:s'); ?>" rel="stylesheet">

Что вы заметите здесь, так это то, что я объединяю функцию даты PHP с моими примерами JS и CSS. Функция даты печатает текущий день, час, минуты и секунды. Другими словами, он постоянно меняет свое имя до самой секунды. Следовательно, браузер не может сохранять кэшированную версию файлов, поскольку они технически не совпадают с каждой секундой.

Если это не то, что вы искали, в частности, дайте мне знать, и я отредактирую свой ответ.

Ваш вопрос также может быть аналогичен тому, что было рассмотрено здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...