Persistent Service Worker dans l'extension Chrome : un guide
Dans Chrome, la persistance des techniciens de service (SW) n'est pas intrinsèquement prise en charge. De par leur conception, les logiciels sont conçus pour être déchargés après cinq minutes d'inactivité, ce qui rend difficile le maintien d'un service opérationnel constant. Dans cet article, nous explorerons diverses solutions de contournement pour que vos logiciels restent opérationnels et réactifs aux événements.
Problèmes et limitations connus
-
Inactif et Minuteries de déchargement : Les logiciels ont une minuterie d'inactivité de 30 secondes et un déchargement de cinq minutes. minuterie.
-
Problèmes d'exécution d'événements : Chrome peut ne pas réveiller systématiquement les logiciels pour tous les événements webRequest, en particulier dans les anciennes versions.
-
Gestion des événements fréquents : La gestion d'événements fréquents tels que webRequest et webNavigation peut provoquer des redémarrages excessifs du logiciel, ce qui a un impact sur les performances. négativement.
-
Appels API consécutifs : L'appel consécutif de certaines API Chrome peut aider à prolonger la durée de vie du logiciel, mais cette approche est considérée comme un exploit de bug.
Solutions de contournement :
Exploitation de bug (Chrome 110 ):
- L'attribution de l'appel chrome.runtime.getPlatformInfo() enveloppé à une variable et son appel répété permettent au logiciel de fonctionner plus longtemps.
API hors écran (Chrome 109) :
- Créer un document hors écran qui envoie un message au SW toutes les 30 secondes. Cette méthode offre actuellement une durée de vie illimitée mais pourra être révisée dans le futur.
API NativeMessaging (Chrome 105) :
- Connexion du logiciel à un hôte nativeMessaging le maintient en marche, même si l'hôte tombe en panne ou se ferme.
API WebSocket (Chrome 116) :
- Établissez une connexion WebSocket et échangez des messages toutes les 25 secondes pour éviter toute inactivité.
Messagerie Chrome API :
- Envoyer un message depuis un onglet dédié au SW toutes les 30 secondes. Cela nécessite des autorisations d'hôte étendues, mais évite le besoin d'applications ou d'API natives.
Onglet dédié :
- Ouvrez un onglet de navigateur avec une page d'extension qui communique avec le logiciel. Cette approche imite une page d'arrière-plan persistante mais consomme plus de mémoire et distrait l'utilisateur.
Précautions :
-
Consommation excessive de ressources :Utilisez les mécanismes de maintien de la vie uniquement lorsque cela est nécessaire et désactivez-les une fois les tâches terminées.
-
Gestion de l'état : Mettre en œuvre une stratégie pour enregistrer et restaurer l'état du logiciel en cas de pannes inattendues.
-
Persistant Hypothèse : Évitez les logiciels persistants dans le seul but de simplifier la gestion de l'état. Utilisez-le principalement pour améliorer les performances dans les cas où la reconstruction de l'état est coûteuse ou en réponse à des événements fréquents.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn