Я немного удивлен, что уже не могу найти ответ на этот вопрос, но я выглядел довольно усердно. Извиняюсь, если я пропустил это где-то очевидное.
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, в которой он развернут, чтобы они хорошо играли вместе?