Si la page est dynamique le navigateur ne la mets pas en cache car sinon il ne pourrait avoir la bonne version à chaque appel.
ne la mettant pas en cache il doit réinterprété la rechargé.
ensuite (en cache ou pas) le navigateur interprète le code HTML de la page. et si celle-ci contient du js le js est compilé.
si le script est statique et lié à la page
le navigateur met en cache le script lorsqu'il interprète le HTML.
puis il le compile et mets la version compilé en cache.
à l'appel suivant que la page soit dynamique ou pas il réinterprète le HTML mais va cherché le JS déjà compilé dans le cache.
agir côté serveur ne change donc rien.
mais l'un n'empêche pas l'autre. lorsqu'on travail à la fluidité de son application il faut agir à tout les niveaux.
lorsque l'application est complexe et qu'il y a beaucoup d'éléments à échanger. il faut penser aux caches serveur (php) aux caches statiques des frontaux (java) aux caches réseau et proxies, au cache fichier du navigateur, au cache du compilateur js.
généré du js à la volé peut être intéressant. Mais parfois ça peut aussi être contre productif.
imagine que dans deux cas une fonction foo fasse deux chose différente. pour simplifier la vie et en pensant qu'ainsi tu ne produit que js dont tu a besoin tu décide de produire le code de foo à la volé.
à chaque appel foo ne contient que le code nécessaire.
foo étant un fonction complexe tu préfère ça à deux fonction foo1 et foo2 te disant qu'ainsi tu ne vas pas charger coté navigateur deux grosse fonction.
tout ce discours semble cohérent et montrer que c'est optimal.
en fait ton client va chargé à chaque fois un des deux code foo le compiler et l'interpréter.
si tu avais fais deux fonction foo1 et foo2 statiques effectivement le premier chargement serait plus lourd tout comme la compilation. mais ensuite ton client ne fait qu'utiliser ce qu'il a déjà.
il est évident que suivant la taille du code et le nombre de fois ou il est utilisé
les avantage d'une solution ou de l'autre changent.
pour une fonction utilisé une fois ça ne change rien.
pour une grosse fonction ou un grand nombre de petites fonctions utilisée des centaines de fois ça change tout.
dans la vrais vie on est quelque part entre les deux et il n'est pas évident de percevoir l'impact.
pour finir
lorsqu'on génère un contenus dynamiquement mais avec les headers qui permettent la mise en cache. pour le client c'est comme une ressource statique. le client ne la redemandera pas. (on utilise souvent cela en java) mais dans ce cas le contenus de la ressource n'est pas dynamique.
A+JYT
0 |
0 |