Il y a quelques temps je mettais en place dans Dotclear des fonctions utilitaires (côté admin et côté public) permettant de passer des variables (au format JSON) à des scripts Javascript.
Pour ça j’introduis dans la page HTML un élément qui ressemble à ceci :
<script type="application/json" id="hscroll-data">
{"color":"#e9573f","top":"0px","bottom":"unset","shadow":"0"}
</script>
Du côté Javascript, lorsque la fonction de récupération est utilisée, elle vide par défaut le contenu de cet élément, ce qui permet au passage de vérifier qu’il a bien été lu. Après lecture, l’élément restant dans la page HTML est celui-ci :
<script type="application/json" id="hscroll-data">
</script>
Je me demande, si d’un point de vue performance, il vaut mieux :
- Ne pas vider du tout le contenu, quitte à ne plus savoir si ça a été récupéré ou pas.
- Vider le contenu seul, comme c’est le cas actuellement.
- Supprimer complètement l’élément de la page HTML (donc du DOM).
Z’avez des billes là-dessus, est-ce que ça affecte beaucoup les performances de toucher au DOM et si oui que vaut-il mieux faire ?
1 De Biou -
Est-ce que tu as détecté des problèmes de perf sur certaines pages ? Qqch qu’on pourrait mesurer ?
Perso je me dis que le problème n’est pas là mais potentiellement en amont parce que tu risques d’avoir de gros fichiers html qui embarquent plein de Json, alors que tu pourrais faire une requête Ajax par la suite qui n’embarquerait que le json.
Le fait d’avoir un gros fichier html impacte le temps de parsing de la page, surtout sur mobile. Après je ne sais pas si les navigateurs parsent proactivement les balises script de type json. Si ça se trouve ça n’a d’impact que sur les premières étapes de parsing.
L’ajax n’est pas non plus la panacée, car tu auras de la latence à chaque requête en particulier sur mobile si le web server ne supporte pas http/2 (on réouvre une socket pour chaque call au lieu de maintenir une socket ouverte)
Bref je ne sais pas, mais si tu as un exemple concret, on peut tester les différentes options et voir l’impact sur la perf, avec des outils comme webpagetest.
2 De Franck -
Dans le cadre de Dotclear, non rien de particulier ; juste je me demande si c’est élégant de laisser des traces et le coût que ça peut avoir de les supprimer :-)
Quant au volume, c’est anecdotique vis-à-vis du poids des pages HTML servies.
3 De biou -
Alors pas de stress, tout roule ! Niveau élégance, j’ai vu bien pire.