2017-07-19 1 views
0

Comment restreindre les dossiers qui se trouvent sous la portée lors de l'enregistrement des techniciens de maintenance.Restreindre les dossiers qui se trouvent dans la portée des techniciens de service

J'ai une structure de dossiers comme celle-ci.

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

Selon ma compréhension:

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

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

     }) 

Ici, le fichier est serviceworker.js dans le dossier folder1, ce qui signifie que tous les fichiers et sous-dossiers à l'intérieur folder1 sont sous le champ d'application. Ce que je veux: Y at-il un moyen de restreindre les fichiers et les dossiers qui relèvent de la portée des travailleurs de service disent subfolder1 et file.js.

Merci à l'avance

+0

Il suffit de créer un dossier 'serviceworker' et mettre le travailleur des services et tout ce que vous voulez restreindre là? –

Répondre

1

Vous ne pouvez pas restreindre spécifiquement un champ d'application des travailleurs de services à appliquer à un seul sous-chemin, mais pas un autre quand ils partagent le même chemin parent. L'approche la plus directe consiste à vérifier explicitement l'URL dans votre gestionnaire fetch et à appeler uniquement event.respondWith() lorsque l'URL correspond à l'un des chemins/fichiers qui vous intéressent. Si vous n'appelez pas event.respondWith(), le gestionnaire fetch sera essentiellement un no-op, et le technicien de service ne sera pas impliqué dans la réponse à la demande.

.: par exemple

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. 
});