是否应该在每个页面上调用Service Worker文件?

Eiv*_*vic 1 service-worker progressive-web-apps

应该从每个页面调用服务工作者文件,例如通过header.php,还是仅从站点索引调用一个实例?

Jef*_*ick 5

注册服务人员后,它可以控制在其范围内访问的任何页面,并且浏览器将自动检查是否有其他调用进行更新navigator.serviceWorker.register()

因此,如果您确定所有用户将至少一次通过该入口点,仅调用您的主入口点就足够navigator.serviceWorker.register(),而不必在其他任何页面上再次调用就足够了。

话虽如此,navigator.serviceWorker.register()多次通话没有任何害处。只要每次都传递相同的URL,它将有效地“不执行任何操作”。不过,我还是建议您使用绝对URL,因为相对URL将以当前页面的URL为基础来解释,如果您的Web应用程序使用具有多级路径的URL,则可能会导致意外结果。调用navigator.serviceWorker.register()每个页面的好处是,即使用户直接导航到站点的子页面,而无需先访问主页,您仍将最终注册一个服务工作者。