Nous générons deux bundles à partir de notre code JavaScript, un pour
les navigateurs modernes et un pour les anciens navigateurs. Vu que
notre site est statique nous utilisons la technique de l'attribut
module/nomodule dans la balise script pour que le navigateur télécharge
la bonne version du bundle.
Safari 10.1 ne supportant pas l'attribut nomodule, nous utilisions une
prothèse pour ajouter ce support. Il semble que ce code ne fonctionnait
pas bien car c'est toujours la version "legacy" du bundle qui était
utilisée sur les versions modernes de Safari (11, 12, 13).
Il y a actuellement un problème de Tracking sur la version Legacy suite
à la migration vers Typescript. J'ai du mal à comprendre d'où vient le
problème, mais en attendant un premier remède consiste à servir la
version normale du bundle aux navigateurs Safari récents.
Note: il semble que Safari téléchargeait les deux bundles ! Ce commit
devrait donc baisser significativement le volume de fichiers à
télécharger.
Les différents sites de l'administration affichent un bandeau noir sur
le logo Marianne en raison du deuil national. Référence vers la version
numerique.gouv.fr qui intégre ce bandeau.
plutôt que de le charger dans le bundle principale.
- Permet d'avoir une estimation du temps de chargement
- Peut-être que le problème du nombre d'entrance plus faible que le nombre de visite sera ainsi reglé
On compile maintenant pour les navigateurs récents (qui supportent les modules es6.
On ajoute une config de build pour les browser legacy (ie11).
Cela permet :
- De ne plus être dépendant de polyfill.io (qui nous a claqué dans les doigts et a peté la prod)
- D'avoir un JS transpilé plus léger et plus proche du code écrit pour les navigateurs récents
- De pouvoir ajuster le build en fonction du navigateur (on ajoute pas le serviceWorker dans IE par exemple. A l'inverse, on
pourrait multiplier le nombre de bundle pour tirer profit de HTTP2)
Acceleration drastique des perfomances, la page est chargée immédiatement.
Limitations:
- La page embauche.beta.gouv.fr est prérendue en français. Le contenue saute si le navigateur est en anglais
- Les tests end to end ne sont pas encore branchés avec les pages prérendues. Voir https://github.com/zeit/serve-handler/issues/71