Retour à la leçon
Mission

Mission : réparer un cache réseau qui plante

Corriger un Service Worker qui lève une erreur sur le corps déjà consommé, et fiabiliser la mise à jour du cache entre deux versions.

Contexte

Le fetch handler d'un Service Worker contient ce code de stratégie network-first :

js
function networkFirst(requete) {
    return fetch(requete).then((reponse) => {
        caches.open("app-shell-v4").then((cache) => cache.put(requete, reponse));
        return reponse;
    });
}

En production, certaines requêtes API échouent avec une erreur liée au corps de la réponse déjà lu, et après le déploiement de "app-shell-v4" (remplaçant "app-shell-v3"), certains utilisateurs voient l'ancienne interface pendant plusieurs jours malgré un self.skipWaiting() déjà présent dans install.