Кэширование сервис-воркера Workbox не активируется сразу при первой загрузке

Создавая своего сервис-воркера с плагином Workbox webpack, я установил для skipWaiting и clientsClaim значение true. При первой начальной загрузке, когда ранее не работал сервис-воркер, я вижу, что все мои предварительно кэшированные ресурсы загружаются программным обеспечением (предположительно для помещения в кеш) на начальной целевой странице. Один из этих ресурсов, мы скажем a.js, действительно отображается на вкладке сети как загруженный среди этих ресурсов.

Затем я перехожу к новому разделу своего веб-приложения, в котором используется a.js, и вижу a.js нагрузку на вкладке сети, но не со стороны сервис-воркера; грузится из сети как обычно. Кажется, что при первой начальной загрузке sw работает и кэширует ресурсы, но не обслуживает из кеша. Это ожидаемое поведение?

Для ясности: если я уберу всех сервисных работников и снова перейду на целевую страницу, но затем обновлю и перезагружу целевую страницу, затем перейду к этому другому разделу, Я действительно могу видеть a.js загрузку из кеша от сервис-воркера. Похоже, что первоначальная установка сервис-воркера не приводит к его полной активности.

Ожидается ли это, и если нет, есть ли способ исправить это?


person Adam Rackis    schedule 06.08.2018    source источник
comment
Удалось ли это исправить?   -  person Carlos    schedule 04.07.2019


Ответы (1)


Если вы используете clientsClaim и находитесь в сценарии с чистого листа, после того, как сервис-воркер завершит установку / активацию, все сетевые запросы должны запускать fetch обработчик сервис-воркера. Итак, то, что вы видите, не соответствует тому, что я ожидал.

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

Вы также можете взглянуть на список контролируемых клиентов для текущего активного сервис-воркера и убедиться, что открытая вами новая вкладка есть в списке:

введите здесь описание изображения

person Jeff Posnick    schedule 07.08.2018