2017-07-19 62 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. 
});