JavaScript読み込みブロック回避でページ表示を高速化する方法
2008/07/25
WebページパフォーマンスツールであるYSlowの主要開発者でありYahoo! Exceptional Performanceの開発者であるStoyan Stefanov氏がNon-blocking JavaScript Downloadsというタイトルで、ページの読み込み速度を向上させるテクニックを簡潔にまとめている。これはブロックが発生するJavaScriptの読み込みを並列化することでページの読み込み時間を短縮しようというもの。Webページの読み込み高速化に効果的な手法なのでWebデベロッパは一度目を通しておきたい。
JavaScriptの読み込み中はほかの読み込み処理がブロックされる。これをDOM経由で動的にロードするように書き換えてやれば並列して読み込まれるようになる。Non-blocking JavaScript Downloadsではこのテクニックの適用で2倍以上の高速化が確認されている。ちなみに画像の読み込みが2並列にとどまっているのはHTTP 1.1に準拠した実装になっているIE7/Firefox2における制限だ。この制限はドメインごとに発生するため画像のドメイン名を変更することで回避もできる。なおIE8/Firefox3では6並列まで拡張されている。
同テクニックはCSSファイルについても適用できる。同じようにDOMを経由して読み込んでやればいい。それほどコードも複雑にならずに効果が期待できる方法だ。
読み込むべきJavaScriptファイルが複数ある場合は、あらかじめひとつのファイルにしてからミニファイしておく方法が効果的だ。どうしても複数のファイルを読み込まなくてならない場合には、YUI Get utilityを使って読み込むようにすればいい。Non-blocking JavaScript Downloadsではこれ以外のテクニックの説明や、それらテクニックの悪影響などについても説明している。簡単に実施できてそれなりに効果の期待できる方法なのでWebデベロッパは一度目を通しておいた方がいいだろう。
![]() |
YUI Get utilityを使った複数スクリプトを読み込む場合 - 同ブログより抜粋 |
ただし、数年後にはこのテクニックはもはや不要のものになっているかもしれない。SafariやIE8ではすでにJavaScriptを並列してロードするように実装が変更されているからだ。Firefox 3はブロックして読み込むが、将来のバージョンでは同様に並列読み込みが可能になるとみられる。しかし、同手法が今後数年間、有益であることは間違いない。
関連記事
- YSlow、Firefox 3に対応[2008/6/20]
- YSlowで知っておくべき6つのテクニック価値[2008/5/12]
- ブクマ推奨: Webサイトを高速化する34のベストプラクティス[2008/4/15]
- Yahoo!パフォーマンスチーム、最新高速化ルール20を発表[2008/3/27]
- Firebug開発版 - Firefox 3サポート、外部エディタインタフェース導入[2008/2/8]
- 【ハウツー】YSlowでWebページを高速化 - リッチさと速さを同時に実現するUIを![2008/1/29]
- YSlowの開発者、Yahoo!からGoogleへ転向[2008/1/8]
- YSlow 0.9登場 - Web 2.0対応強化、パフォーマンス分析能力向上[2007/12/10]
- 高速に表示できるWebサイトを開発するために - YSlow 0.8登場[2007/10/9]
- Yahoo!がページパフォーマンス計測ツール「YSlow for Firebug」を公開[2007/7/27]
ヘッドライン
- 【レポート】暗号2010年問題に向け「いつまでに何をすべきか」 - ベリサインが説明[08:00 2/10]セキュリティ
- ルネサス、RXファミリ第3弾としてモータ制御向け「RX62T」を製品化[07:00 2/10]エレクトロニクス
- Rambus、次世代携帯機器向けメモリ「モバイルXDR」を発表[21:16 2/9]エレクトロニクス
- Intel、基幹業務システム向け次世代プロセッサ「Itanium 9300」を発表[20:47 2/9]エレクトロニクス
- MicronとNanya、42nmプロセスを採用した2GビットDDR3を開発[20:07 2/9]エレクトロニクス
- ISSCC 2010 - 日立、1Gbpsあたり消費電力1mW以下のトランシーバ回路を開発[19:52 2/9]エレクトロニクス
- CSSを最適化する3つのツール[17:17 2/9]JavaScript / CSS / HTML
- TIOBEプログラミング言語人気 - Scratch/Erlang/Scala/JavaFX[17:17 2/9]プログラミング
- Microsoft、Red Hat Linuxサポートをひっそり追加[17:15 2/9]システム管理
- IBM、8コア/32MB eDRAM搭載の高速CPU「POWER7」を発表 - サーバも販売開始[17:02 2/9]サーバとストレージ






