Appliquer la mise a jour au demarrage et fermer les fuites de cache
Sur l'application installee sur telephone, le bandeau restait sans effet et
le chargement se figeait a 100 %. La capture montrait le bandeau SANS son
CSS, alors que le script et sa regle sont arrivés dans le meme commit : ce
n'etait pas une mise a jour qui ne s'applique pas, mais une mise a jour
appliquee a moitie.
- MapFallbackToFile n'heritait pas des StaticFileOptions : « / », le
start_url de la PWA, repartait sans Cache-Control (mesure), donc en cache
heuristique. A1 avait couvert tous les fichiers statiques sauf celui-la.
- register('service-worker.js') se resolvait contre l'URL du document et non
contre <base> : une ouverture sur une route profonde visait
/souhaits/service-worker.js, qui repond 404 (verifie). Tout le hors-ligne
tombait alors en silence.
- clients.claim() et un rechargement force borne a une fois par session
donnent un filet a la chaine SKIP_WAITING -> controllerchange -> reload.
- Une version prete dans les 10 s suivant l'ouverture s'applique seule, sans
bandeau ; au-dela on repasse par le clic, pour ne pas arracher une saisie.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,12 @@ async function onActivate(event) {
|
||||
await Promise.all(cacheKeys
|
||||
.filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName)
|
||||
.map(key => caches.delete(key)));
|
||||
|
||||
// Prendre la main sur les pages déjà ouvertes. skipWaiting() est censé le faire seul, mais
|
||||
// c'est ce qui déclenche `controllerchange`, donc le rechargement côté page : sans reprise
|
||||
// effective, le bouton « Mettre à jour » se grise et il ne se passe plus rien — symptôme
|
||||
// observé sur téléphone. Cet appel est sans effet quand la reprise a déjà eu lieu.
|
||||
await self.clients.claim();
|
||||
}
|
||||
|
||||
async function onFetch(event) {
|
||||
|
||||
Reference in New Issue
Block a user