Bonjour l’équipe,
Notre équipe gère les forums Discourse et rencontre des problèmes de requêtes en double sur Chrome, mais pas sur Firefox ou Safari. Je soupçonne que ce problème est lié aux service workers et à Workbox.
À quoi ressemble la configuration ?
- Nous avons un domaine : https://example.com
- Les scripts sont hébergés sur un sous-chemin : https://example.com/assets/myScript.js
- myScript effectue un appel GET vers un point de terminaison externe : https://foobar.com/
Quel est le problème ?
- Lorsque je visite les forums pour la première fois (ou après un rafraîchissement forcé), une seule requête est envoyée par le navigateur.
- Lors de la deuxième requête, deux requêtes sont envoyées par le navigateur. L’une provient du fichier servi par le service worker, et l’autre de fetchWrapper.mjs : workbox/packages/workbox-core/_private/fetchWrapper.mjs at 194cdeb63d5abb21490f88f01f02f4bcf7e6d54b · GoogleChrome/workbox · GitHub
Informations supplémentaires :
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L18-L35 - Il s’agit de la configuration responsable de la création des service workers. Elle utilise la stratégie « Network first ».
Comment pouvons-nous résoudre ce problème ?
Tout comme pour l’authentification (https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L10), nous pouvons exposer /analytics/ en tant que route ou permettre aux utilisateurs de passer un tableau de routes personnalisées configurées en mode NetworkOnly. Notre configuration est basée sur Docker et EC2, il faut donc également exposer cela dans cet environnement.