hagino3000's blog

平成アーカイブス (更新停止)

Firefox 3.1 のHTML投機的解釈

Firefox 3.1で採用される高速化技術の一つにSpeculative Parsingというのがあるが、その内容が気になる。

Speculative Parsing


Firefox 3.0.xでは、あるWebページで複数の外部スクリプトファイル(たとえばxxx.jsなど)が指定されている場合、1つのファイルを読み込んでいる間は、他の部分の読み込みや解釈が中断してしまう。これは、そのスクリプトJavaScriptなど)にページ内の他の個所を表示させない指示が書き込まれている可能性を考慮してのことだが、実際にそのような例はまれだ。


そこで、スクリプトファイルの読み込み中も、他の部分の読み込みや解釈の処理を中断しないようにするのが、このSpeculative Parsing(投機的解釈)という技術だ。現在のところ、別のスクリプトファイルの読み込みを平行して処理するだけで、スタイルシートや画像は対象とされていないが、それでも、多数の外部スクリプトファイルを参照しているWebページでは多大な効果を発揮する。

Firefox 3.1で採用される高速化技術

src属性をもつscriptタグが出現したらキューイングしておいて、htmlのレンダリングと並行処理してくれるっぽいんだけど。こんな感じのコードはどう実行されるんだろう?

<script type="text/javascript" src="./js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
//<![CDATA[

  // jqueryの読み込みが終わっていなかったら??
  $(function(){
    alert('hogehoge');
  });

//]]>
</script>

他にもHTMLのレンダリングが先に終わってしまった場合に、onclick属性から外部ファイルで定義されているメソッドを読んでいたらエラーになるだろうし、適当な作りの既存アプリが動かなくなったらどうしよう。といろいろ心配してみました。今後要調査ということで。