禁用服务工作者的子目录

时间:2018-07-19 13:15:46

标签: service-worker

我有一个带有服务工作者的Web应用程序,该应用程序在域的根级别注册。它提供了基本的脱机功能。

我不希望服务人员在请求特定子目录(例如, / example /

我可以在服务人员中添加此检查,但是是否可以针对特定路径完全禁用服务人员?

还是在子目录中设置另一个工作程序,以便它将覆盖第一个工作程序?

1 个答案:

答案 0 :(得分:1)

因此,默认情况下,SW作用域是全局的。但是从这个参考来看

https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register

应该可以使用scope选项来限制服务人员的范围以缩小范围。但是,从某种意义上说,您可以限制子文件夹。您将需要将该子文件夹移出Service Worker范围。

IE:您将有问题的文件夹移动到主目录中,然后将所有其他文件夹移动到./网站位置。

if ('serviceWorker' in navigator) {
  // Register a service worker hosted at the root of the
  // site using a more restrictive scope.
  navigator.serviceWorker.register('/sw.js', {scope: './website'}).then(function(registration) {
    console.log('Service worker registration succeeded:', registration);
  }, /*catch*/ function(error) {
    console.log('Service worker registration failed:', error);
  });
} else {
  console.log('Service workers are not supported.');
}

如果这没有帮助,我想到的唯一选择就是您提到的选择。