2009-09-04 5 views
4

私はjqueryの上に重いですページの微調整であり、このウェブサイトに出くわし:ブラウザはJavaScriptコードを「キャッシュ」していますか?

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

私は「テストの実行」ボタンを初めてクリックすると、数字がその後のクリックよりも高くなっている方法。これはJSがブラウザによってキャッシュされているためですか?誰かが内部的にどのように動作するか説明できますか?ユーザーはJSをキャッシュしないことを選択できますか?

+0

IE7外見= P – Havenard

+0

IE8テストは3倍高速でした... – Havenard

+0

5人のブラウザでのすべてのテストで安定した値が返されました。この最初のテストで同時に何か他のものをロードしていたので、最初のテストは遅かったです。 – Havenard

答えて

2

外部のjavascriptファイルはキャッシュされていますが、もちろん、スクリプトタグを含むHTMLもキャッシュできます。 あなたが見るものは、htmlキャッシングやブラウザの最適化の結果かもしれません。別のブラウザを試し、ブラウザを閉じて再度開き、ブラウザのキャッシュをクリアする必要があります。

+0

リロードした場合、再び遅くなります。そのため、キャッシュされたファイルが原因ではありません。 – Alan

+0

彼が見ているのは、セレクタクエリ結果をキャッシュするjQueryです。 –

+2

エリヤ、私はそれが本当であるかどうかはわかりません。 Firebugプロファイラで実行し、結果を比較します。 jQueryの実行コード時間は1回目と2回目と同様です。 –

1

JavaScriptコードがキャッシュされているかどうかにかかわらず、実行のパフォーマンスには影響しません。あなたが見ているのは、jQueryがセレクタクエリの結果をキャッシュして、後続の実行で長くかかることがないようにすることです。

+0

それが違いの主な原因であった場合、私はIE 8で同様の動作が見られると予想しています。 –

+0

その後の実行ではパフォーマンスは向上しません。 5つの異なるブラウザ(およびIEの2つの異なるバージョン)でテストされた数は、最初の実行以降のすべての実行から安定していました。最初のテストで、おそらくCPUをロードしていて、キャッシュに関係すると思っていました。 – Havenard

+1

Havenard、あなたと私は別の結果を見ています。私は、Firefox 3.5での2回目以降の実行で一貫してより速い実行を見ています。 –

1

Firefox 3.5では2回目の数字が大きく異なっています。 OTOHは、IE 8でかなり安定しています(Firefox 8のJavaScriptインタプリタはJSを実行可能コードにコンパイルします)。最初の時間が遅いことは意味があります。コードはまだJITされていません。

1

あなたが見ているパフォーマンスの向上は、おそらくあなたのjavascriptインタプリタによるものです。ほとんどの新しいWebブラウザでは、JITコンパイル用のJavaScriptエンジンを使用して、複数回のコードパスを最適化できます。

this blog postは、Safariのjavascriptエンジンがスピードアップの多くを達成した方法を説明しています。

関連する問題