Как заставить CRA на Azure вести себя правильно с w.r.t. serviceWorker кеширует? - PullRequest
0 голосов
/ 30 августа 2018

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


TL; DR

Вопрос. Как настроить CRA (с ПО) и службу приложений Azure, в которой он развернут, чтобы они хорошо играли вместе?


В (текущей) стандартной конфигурации CreateReactApp, относящейся к serviceWorkers, имеется относительно хорошо обсуждаемая проблема кэширования.

Это слегка обсуждается здесь, в документах CRA: https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#user-content-opting-out-of-caching (особенно, пункты 5 и 6 из "Offline-First соображений").

А расширенный аргумент о его первоначальном включении в CRA можно найти здесь: https://github.com/facebook/create-react-app/issues/2398

Я не уверен на 100% в своем понимании, поэтому я начну с краткого изложения того, что в настоящее время я считаю верным:


  • CRA настроил стандартные процессы очистки кэша в своих основных файлах.
  • CRA включил шаблон «Service Worker» для выполнения сверхпрочного кэширования в тяжелых условиях.
  • Сервисный работник может в основном загружать страницу даже без подключения к интернету.
  • В принципе, ПО загрузит страницу, а затем пойдет и спросит сервер о последнем коде.
    • Если он обнаруживает более новую версию, он загружает ее и кэширует новую версию.
    • Будет НЕ немедленно отображать новую версию, но будет использовать новую версию в следующий раз, когда страница загружена, из ее недавно обновленного кэша.

Все это стандартное, желаемое, предполагаемое поведение работников службы. Но в дополнение к этому:

  • ServiceWorker НЕ кеш отключен.
  • В зависимости от конфигурации вашего хост-сервера, само serviceWorker может кэшироваться.
    • Если это произойдет, то будет постоянно отображать устаревшую версию сайта, пока serviceWorker не будет очищен из кэша, а , а затем будет начните пытаться обновить доступный контент.
  • Стандартная стандартная конфигурация Azure делает кеширование SW, и до сих пор (после 24 часов), похоже, вообще не освобождает этот кеш: (

Вопрос 0: Я все правильно понял или я что-то упустил?


Мне нравится звук serviceWorker в целом - кажется, что он делает полезную работу, но очень маловероятно, что CRA предоставил что-то, что при установке из коробки в Azure в корне нарушается - сайт, который я В настоящее время развернуто (или создается впечатление, что) невозможно отправить обновления!

Мне кажется, я знаю, как отключить ServiceWorker, по-видимому, включая активные шаги, необходимые для очистки его от браузеров людей, которые уже видели его один раз и, таким образом, уже имеют активное ПО. (Хотя я не совсем понимаю, как этот код будет работать !?) Но я бы предпочел не делать этого, если бы мог избежать этого - я бы лучше понял, как работать С этой функцией, чем как ОТКЛЮЧИТЬ эту функцию.

Итак ...

Вопрос. Как настроить CRA (с ПО) и службу приложений Azure, в которой он развернут, чтобы они хорошо играли вместе?

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