web-dev-qa-db-fra.com

Pourquoi utiliser Service Worker pour la mise en cache lorsque le cache du navigateur gère la mise en cache?

Je lis le service worker pour la mise en cache hors ligne similaire à la mise en cache du navigateur. Alors pourquoi préférer le service worker pour cette mise en cache. Même la mise en cache du navigateur vérifiera si le fichier a été modifié ou non et sert ensuite à partir du cache, tandis que le service worker gère la même chose à partir de notre code. Mais par défaut, le navigateur a cette fonctionnalité, alors pourquoi préférer le service worker?

42
vbharath

Les techniciens de maintenance vous offrent un contrôle total sur les requêtes réseau. Vous pouvez renvoyer tout ce que vous voulez pour l'événement fetch, il n'a pas besoin d'être le contenu passé ou actuel de ce fichier particulier.

Cependant, si le cache du navigateur répond à vos besoins, vous n'êtes pas obligé d'utiliser les Service Workers.

Ils sont également utilisés pour des choses telles que les notifications Push.

Documentation: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API , https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers

17
Daniel Herr

Je voulais partager les points que j'ai observés en parcourant la documentation des travailleurs de service et en la mettant en œuvre.

  1. Le cache du navigateur est différent, car l'agent de service prend en charge le cache hors ligne, la webapp accède au contenu mis en cache, même si le réseau n'est pas disponible.
  2. Le travailleur de service donnera une expérience native.
  3. Le technicien de service ne peut pas modifier le contenu DOM mais il peut quand même servir les pages dans sa portée. À l'aide d'événements comme postMessage, la page est accessible et le DOM peut être modifié.
  4. Le technicien de service n'a pas besoin d'interaction avec l'utilisateur ni de page Web. Il s'exécute en arrière-plan.
4
vbharath