Dans mon Progressive Web App, dois-je utiliser l'API de cache dans un technicien de service pour mes actifs statiques, ou dois-je simplement me fier au contrôle de cache natif du navigateur pour ces éléments? Quelle est la différence?
Un avantage majeur de l'API de cache de service worker est qu'elle vous donne un contrôle plus détaillé que le cache de navigateur intégré. Par exemple, votre technicien de service peut mettre en cache plusieurs demandes lorsque l'utilisateur exécute votre application Web pour la première fois, y compris les actifs qu'il n'a pas encore visités. Cela accélérera les demandes suivantes. Vous pouvez également implémenter votre propre logique de contrôle du cache, en veillant à ce que les actifs considérés comme importants soient conservés dans le cache tout en supprimant les données moins utilisées.
La principale différence est le contrôle. Le cache du navigateur est chassé des en-têtes Cache-Control, ce qui est bien, jusqu'à ce qu'il ne le soit pas. Il existe toutes sortes de stratégies pour gérer la façon dont les ressources adressables du réseau sont mises en cache; public privé; le temps de vivre, etc.
Avec la mise en cache du service worker, vous pouvez contrôler par programme la persistance de ces actifs. Mais cela signifie que le fardeau est sur vous.
Le cache du navigateur est ce que je considère non fiable. Le navigateur purge automatiquement les actifs en fonction de la disponibilité de stockage de l'appareil. Par exemple, les iPhones ignoraient la mise en cache pour toute ressource de plus de 25 Ko. Aujourd'hui, je pense qu'ils sont juste très agressifs.
Je sais que l'équipe Facebook a fait une étude il y a quelques années et n'a trouvé que 25% des fichiers qu'elle s'attendait à ce que les navigateurs mettent en cache en fonction des en-têtes. Cela signifiait qu'il y avait un trafic réseau et une activité serveur supplémentaires.
C'est pourquoi la mise en cache des employés de service est le meilleur choix. N'allez pas supprimer vos en-têtes de cache, ne vous y appuyez pas.