Прописать отдельный сервис-воркер для каждой страницы?

В моем приложении есть несколько страниц, например, http://example.com/path/foo1.html и http://example.com/path/foo2.html. Могу ли я зарегистрировать отдельного работника службы для каждой из этих страниц, или они должны использовать одного и того же работника службы, потому что они оба находятся в папке ./path? Другими словами, указывает ли параметр области папку или может указывать страницу? Я попытался отдельно зарегистрировать сервис-воркеров, по одному на каждую страницу, но я вижу, что оба сервис-воркера загружаются для каждой страницы. Это ожидаемо или я что-то не так делаю?


person user2486738    schedule 05.11.2019    source источник


Ответы (1)


Вы можете зарегистрировать несколько сервис-воркеров для разных страниц, если указанная область отличается. Поскольку корнем для обеих страниц является «/path», все, что находится после пути, будет контролироваться одним и тем же сервисным работником.

Для регистрации нескольких сервис-воркеров вам нужно, чтобы страницы были перемещены по другому пути. или, по крайней мере, включите что-то между корневой и html-страницей.

путь/samp/foo1.html и путь/samp1/foo2.html

В приведенном выше случае в foo1.html вы можете зарегистрировать сервис-воркера с областью действия как path/samp, а в foo2.html — с областью действия path/samp1.

Включение нескольких сервис-воркеров для одной и той же области в настоящее время недоступно.

Для получения дополнительной информации: https://github.com/w3c/ServiceWorker/issues/921

person Indragith    schedule 06.11.2019
comment
Оказывается, область может указывать страницу, это не обязательно должна быть папка. См. w3c.github.io/ServiceWorker/#scope-match-algorithm. - person user2486738; 28.11.2019