2017-07-19 57 views
0

如何在注册服务人员时限制处于范围内的文件夹。限制服务人员范围内的文件夹

我有这样的文件夹结构。

-root 
-folder1 
    -subfolder1 
    -subfolder2 
    -subfolder3 
    -file.js 
    -file2.js 
    -css1.css 
    -css2.css 
    -serviceworker.js 

根据我的理解:

if ('serviceWorker' in navigator) { 
    navigator.serviceWorker 
     .register('serviceworker.js',) 
     .then(function(reg) { 

      console.log('Registration succeeded', reg); 

     }) 

这里serviceworker.js文件是文件夹1文件夹,这意味着所有的文件和文件夹1里子文件夹范围下下。

我想要什么: 有什么办法来限制服务工作者的范围内的文件和文件夹说subfolder1和file.js.

在此先感谢

+0

只需创建一个'serviceworker'文件夹,把你想要将其限制到那里的服务人员和东西吗? –

回答

1

不能明确限制一个服务人员的范围,只适用于一个子路径,但不是另一个时,他们都共享相同的父路径。

最直接的方法是明确检查您的fetch处理程序中的URL,并在URL与您关心的某个路径/文件相匹配时仅调用event.respondWith()。如果您没有拨打电话event.respondWith(),则fetch处理程序基本上将处于禁用状态,并且服务人员不会参与对该请求的响应。

例如为:

self.addEventListener('fetch', event => { 
    if (event.request.url.includes('subfolder1')) { 
    event.respondWith(/* your caching/network logic */); 
    } 
    // By not calling event.respondWith() for certain requests, 
    // the service worker will effectively be a no-op. 
});