2009-09-04 6 views
4

j'étais un réglage fin d'une page qui est lourd sur jquery et sommes tombés sur ce site:Le navigateur "cache" le code javascript?

http://www.componenthouse.com/extra/jquery-analysis.html

Lorsque je clique sur le bouton « Exécuter Test » la première fois, les chiffres sont beaucoup plus élevés que les clics suivants . Est-ce parce que JS est mis en cache par le navigateur? Quelqu'un peut-il expliquer comment cela fonctionne en interne? Un utilisateur peut-il choisir de ne pas mettre en cache le JS?

+0

Non IE7 apparemment = P – Havenard

+0

Le test IE8 était 3 fois plus rapide ... – Havenard

+0

Tous mes tests dans 5 navigateurs ont retourné des valeurs stables. Je crois que votre premier test a été plus lent parce que vous chargiez autre chose en même temps pendant ce premier test. – Havenard

Répondre

2

Les fichiers javascript externes sont mis en cache et, bien sûr, un html contenant des balises de script peut également être mis en cache. Ce que vous voyez peut être le résultat d'une mise en cache HTML ou d'une optimisation du navigateur. Vous devriez essayer différents navigateurs, en fermant et en rouvrant votre navigateur et en effaçant le cache du navigateur.

+0

Si vous cliquez sur recharger, vous obtenez à nouveau des temps plus lents, donc ce n'est pas dû à la mise en cache des fichiers. – Alan

+0

Ce qu'il voit, c'est que jQuery met en cache les résultats de la requête du sélecteur. –

+2

Elijah, je ne suis pas sûr que ce soit vrai. Exécutez-le dans le profileur Firebug et comparez les résultats; les heures du code d'exécution jQuery sont similaires sur les 1ères et 2èmes exécutions. –

1

Que le code JavaScript soit mis en cache ou non, les performances d'exécution ne sont pas affectées. Ce que vous voyez est jQuery en cache les résultats pour les requêtes du sélecteur afin qu'ils ne prennent pas autant de temps sur les exécutions suivantes.

+0

Si c'était la principale cause de la différence, je m'attendrais à voir un comportement similaire dans IE 8. –

+0

Il n'y a pas de gain de performance dans les exécutions suivantes. Testé dans 5 navigateurs différents (et 2 versions différentes de IE), le nombre était stable à partir du premier et de tous les suivants. Le gars chargeait probablement beaucoup de CPU pendant le premier test et pensait que cela avait quelque chose à voir avec la mise en cache. – Havenard

+1

Havenard, vous et moi voyons des résultats différents, alors. Je vois une exécution toujours plus rapide sur la deuxième et toutes les exécutions suivantes sur Firefox 3.5. –

1

Les chiffres sont (significativement) différents pour moi pour la deuxième fois dans Firefox 3.5. OTOH, ils sont assez cohérents (lentement) dans IE 8. L'interpréteur JavaScript de Firefox 3.5 compile le JS en code exécutable. Donc, il est logique que la première fois est plus lente; le code n'a pas encore été modifié.

1

L'amélioration des performances que vous voyez est probablement due à votre interpréteur javascript. La plupart des nouveaux navigateurs utilisent un moteur javascript de compilations JIT afin que les chemins de code pris plusieurs fois puissent être optimisés.

Lisez le document this blog post sur la façon dont le moteur javascript de Safari a réalisé plusieurs de ses accélérations.

Questions connexes