Hola equipo,
Nuestro equipo gestiona los foros de Discourse y estamos experimentando problemas de solicitudes duplicadas en Chrome, pero no en Firefox ni en Safari. Sospecho que este problema está relacionado con los service workers y Workbox.
¿Cómo es la configuración?
- Tenemos un dominio: https://example.com
- Los scripts se alojan en una subruta: https://example.com/assets/myScript.js
- myScript realiza una llamada GET a un punto final externo: https://foobar.com/
¿Cuál es el problema?
- Cuando visito los foros por primera vez (o tras una recarga forzada), se envía una única solicitud desde el navegador.
- En la segunda solicitud, se envían dos solicitudes desde el navegador: una desde el archivo servido por el service worker y otra desde fetchWrapper.mjs: workbox/packages/workbox-core/_private/fetchWrapper.mjs at 194cdeb63d5abb21490f88f01f02f4bcf7e6d54b · GoogleChrome/workbox · GitHub
Información adicional:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L18-L35 - Esta es la configuración responsable de crear los service workers. Utiliza la estrategia Network first.
¿Cómo podemos solucionarlo?
Al igual que con la autenticación https://github.com/discourse/discourse/blob/master/app/assets/javascripts/service-worker.js.erb#L10, podemos exponer /analytics/ como una ruta o permitir que los usuarios configuren un array de rutas personalizadas que se establezcan en NetworkOnly. Nuestra configuración está en Docker y EC2, por lo que esto también debería exponerse allí.