Ciao Team,
Il nostro team si occupa dei forum Discourse e sta riscontrando problemi di richieste duplicate su Chrome, mentre su Firefox e Safari non si verificano. Sospetto che questo problema sia legato ai service worker e a Workbox.
Com’è configurato l’ambiente?
- Abbiamo un dominio: https://example.com
- Gli script sono ospitati in un sottopercorso: https://example.com/assets/myScript.js
- myScript effettua una chiamata GET a un endpoint esterno: https://foobar.com/
Qual è il problema?
- Quando visito i forum per la prima volta (o dopo un aggiornamento forzato), viene inviata una singola richiesta dal browser.
- Alla seconda richiesta, vengono inviate due richieste dal browser: una proveniente dal file servito dal service worker e una da fetchWrapper.mjs - workbox/packages/workbox-core/_private/fetchWrapper.mjs at 194cdeb63d5abb21490f88f01f02f4bcf7e6d54b · GoogleChrome/workbox · GitHub
Informazioni aggiuntive:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L18-L35 - Questa è la configurazione responsabile della creazione dei service worker. Utilizza la strategia “Network first”.
Come possiamo risolvere il problema?
Proprio come per l’autenticazione https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L10, possiamo esporre /analytics/ come route o rendere configurabile per gli utenti l’invio di un array di route personalizzate impostate su NetworkOnly. Il nostro ambiente è basato su Docker e EC2, quindi questa configurazione dovrebbe essere esposta anche lì.