我有一个带有服务工作者的Web应用程序,该应用程序在域的根级别注册。它提供了基本的脱机功能。
我不希望服务人员在请求特定子目录(例如, / example /
我可以在服务人员中添加此检查,但是是否可以针对特定路径完全禁用服务人员?
还是在子目录中设置另一个工作程序,以便它将覆盖第一个工作程序?
答案 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.');
}
如果这没有帮助,我想到的唯一选择就是您提到的选择。