2017-07-19 29 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ファイルがfolder1の内部のすべてのファイルとサブフォルダがスコープ下にあることを意味し、folder1のフォルダの下にあります。

私が望むもの: サービスワーカーの範囲に含まれるファイルとフォルダを制限する方法は、subfolder1とfile.jsです。あなたは、特に彼らの両方が同じ親パスを共有する場合、一つのサブパスではなく、他には適用のみにサービス労働者の範囲を制限することはできません事前

+0

ちょうど 'serviceworker'フォルダを作成し、そこにそれを制限したいサービスワーカーと何かを置きますか? –

答えて

1

感謝。

最も直接的なアプローチは、fetchハンドラのURLを明示的にチェックし、そのURLが気になるパス/ファイルの1つと一致する場合にのみ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. 
}); 
関連する問題