11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Depuis un an ou deux les Progressive Web Apps me font de l'œil.

Alors, jusqu'à maintenant, je me suis contenté de déclarer un fichier `manifest.manifest` correct et d'élaborer un script remplissant les conditions minimales pour déclarer un service worker. Avec ça, on a déjà un site web qui se lance comme une application, et tout cela sans passer par un store (c'est bien la raison pour laquelle Apple fait de la résistance face aux PWA).

Mais cette semaine j'ai fait le grand saut et ai décidé d'aller plus loin : la mise en cache de mon site grâce à un service worker ***, ce qui me permet par exemple d'avoir les principales pages de mon site hors ligne, ainsi que celles déjà consulté par l'utilisateur. Et vous savez quoi ? ça marche ! Enfin... presque : en effet, une fois passé l'euphorie des deux premiers soirs passés sur le sujet je me suis vite rendu compte qu'un service worker mal réglé peut poser des problèmes de performance et crée plus de problèmes qu'ils n'en résout.

Au début cette histoire a l'air simple et puis, en raison des problèmes rencontrés, on entre dans le vif du sujet, à savoir les "stratégies' à adopter :
- Cache first (les fichiers en cache sont servi en priorité)
- Network first (le réseau prime sur le cache)
- Stale while revalidate (les fichiers en cache sont servis en premier, mais si un fichier sur le réseau est plus récent il le remplacera).
Et encore, je laisse de côté les stratégies Cache only et Network only.

Donc, voilà, j'avance de deux pas... je recule de trois... je réavance de quatre... Le sujet est passionnant et j'apprends plein de trucs, mais ce n'est pas très simple tout de même.

Si certains d'entre vous se sont déjà essayé aux PWA je serais ravi d'en discuter avec eux. Contrairement à Google AMP (pour ces dernières je n'y ai jamais cru et le futur m'a donné raison) je pense que cette api fera partit de l'avenir du Web.

___
*** un cache haut niveau, rien à voir avec le cache bas niveau du navigateur.
Modifié par Olivier C (24 Sep 2024 - 11:14)