Правильный метод обеспечения пользователей получить последнюю версию веб-сайта после обновления - PullRequest
0 голосов
/ 07 сентября 2018

Каждый раз, когда я внедряю обновление в наше веб-приложение, клиенты звонят с проблемами, когда их браузер не обнаружил, что index.html изменился, и так как имя файла .js изменилось, они сталкиваются с ошибками. Предположительно, потому что их index.html по-прежнему указывает на старый файл javascript, который больше не существует.

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

У нас есть веб-приложение HTML5 + AngularJS. Он использует WebPack для объединения javascript поставщика и приложения в два js-файла. Файлы содержат хеш-имя, чтобы гарантировать, что они будут отличаться после выпуска.

Некоторая другая информация

  • Я никогда не смогу повторить эту проблему локально (и под этим я имею в виду отладку, на нашем промежуточном или производственном сайте)
  • Мы используем CloudFlare, но очищаем весь кеш после выпуска
  • У нас есть механизм в JS, который проверяет загрузку страницы или каждые 5 минут, чтобы увидеть, изменилась ли версия нашего API, и в этом случае отобразить сообщение «Пожалуйста, обновите ваш браузер». Нажатие на это запускает window.location.reload(true);
  • Наш бэкэнд - IIS

1 Ответ

0 голосов
/ 07 сентября 2018

Если вам нужно, чтобы пользователи выбирали последнюю версию index.html, когда они загружают ваш сайт сразу после того, как вы обновили файл, сделайте index.html не кэшируемым. Это будет означать, что браузер, CloudFlare и любые промежуточные прокси не могут его кэшировать, и что один файл всегда будет обслуживаться с вашего канонического сервера.

Естественно, это влияет на трафик и задержку (для вас и для них), но если это действительно ваше требование, я не вижу никакой другой возможности.

На этом есть спины. Это не может быть index.html, который не может быть кэширован, вы можете вставить другой ресурс (крошечный файл JavaScript, который записывает правильные теги script), если index.html действительно большой, и его важно кэшировать и т. Д. Но если вам нужно, чтобы изменение было получено немедленно, вам потребуется не кэшируемый ресурс, который идентифицирует это изменение.

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