Firefox web browser - Faster, more secure & customizable

MozillaのAlexander Limi氏がMaking browsers faster: Resource Packagesにおいてブラウザの動作を高速化させる方法を提案している。ブラウザ側の対応だけでよく、サポートしていないブラウザが閲覧しても影響がなく、現在の枠組みの中で簡単に実装して実現できる。Alexander Limi氏はPlone CMFの開発者であるとともに、以前はJarnやGoogleで働いていたこともある。

HTTPリクエストの数を減らすことでWebページの高速な表示を実現しようというテクニックのひとつにCSS Spritesと呼ばれる手法がある。これは複数の画像を一つの画像にまとめ、レンダリングの段階でCSSの分割表示機能を使うというもの。HTTPリクエストの数を減らすことができるため、すでに有名なサイトで高速化テクニックとして採用されている。しかしこの方法には次にあげるようないくつかの問題もある。

  • ソースコードがわかりにくくなる
  • 圧縮された画像が展開された場合、想定している以上のメモリとディスクを消費するケースがある
  • レンダリングに使われるプロセッサリソースが従来よりも増える
  • 画像を更新するといった作業が大変

Alexander Limi氏が提案している方法は、いわばCSS Spritesの発想をほかのすべてのリソースに対しても適用しようというもの。画像、JavaScript、CSSなどのリソースを一括してZIPで圧縮してひとつのファイルにしておき、これをダウンロードで提供する、というのが発想の根幹となる。HTTPリクエスト1回で必要になるすべてのリソースを取得できるようにしよう、というわけだ。Alexander Limi氏はこの取り組みを「Resource Packages」と呼んでいる。

Resource Packageの指定例

Making browsers faster: Resource Packagesでは上記画像のような記述が紹介されている。同タグが記載されている場合、Resource Packagesに対応しているブラウザは指定されたURLからZIPファイルを取得して、その中身をリソースとして利用する。こうすることでリソースを取得するHTTPリクエストが1回で済むという寸法だ。

ZIPファイルの中身の例

マニフェストファイルの中身の例

この方法はブラウザ側での実装が簡単なうえ、サーバ側に変更を加える必要がない。既存のほかの高速化の方法と比較して即効性があり、そして現実的というわけだ。Mozillaの開発者はこの提案に前向きで、a proposal: resource packages to improve performanceによれば反応を見て、Firefox 3.7で実装したいと前向きな意見を発表している。サポートしていいないブラウザにはほとんど影響がないというのもポイントとなる。

高速化の取り組みはGoogleがSPDYを発表している。これはいわばセッションレスなHTTP層の下にセッションを活用する層を挟み込み、さまざまな側面から高速化しようという取り組み。Resource Packagesと比べてサーバ側もブラウザ側も対応が必要になる。