今回は、最新Webブラウザーの高速化手法について見ていこう。

 最初に取り上げるのは、Firefox QuantumのCSSレンダリング処理だ。Firefox QuantumのCSSレンダリング処理は大きく刷新されており、ベンチマークのスコアは低かったが、実際に利用してみると明らかに高速化したことが体感できる。

 高速化の秘訣は、レンダリングを複数のCPUコアに分散させて並列処理させることだ。WebブラウザーはHTMLの要素をDOMツリーとして解釈し直してから描画する。Firefox QuantumはDOMの処理を複数のCPUコアに分散させる。さらに、早く処理が終わったCPUコアにはまだ処理が残っているタスクを割り当てる「Work Stealing」という手法を利用している。

Firefox Quantumの高速化の工夫
[画像のクリックで拡大表示]

 最近のパソコンやモバイル端末ではマルチコアのCPUを搭載していることがほとんどだ。このマルチコア時代に合わせた高速化の工夫と言えるだろう。

 Firefox Quantumのもう一つの特徴は、「Rust」と呼ぶプログラミング言語が全面的に採用されている点だ。Rustは関数型プログラミング言語の一種で、Firefoxの提供元であるMozilla Foundationが開発している。安全に並列処理を実装できるのが特徴だ。このRustがQuantumのマルチコアレンダリング処理部分の実装に大きく貢献したことは間違いないだろう。RustはFirefoxに限らず、Webアプリケーションの開発に使われるなど、Webの世界で積極的に利用され始めている。

TLSハンドシェイクを削減

 Webブラウザーの処理速度ではなく、通信自体を改良して高速化を図る試みもある。それがSPDYとQUICだ。

 SPDYの高速化はTLSのセッション生成(ハンドシェイク)の回数を減らすことで実現する。SPDYはもともとグーグルが開発した技術だが、現在はWebの標準仕様であるHTTP/2の一部となっている。

SPDYによる通信の高速化
[画像のクリックで拡大表示]

 最近のWebでは、通信に平文のHTTPではなく、TLSによるHTTPSを標準で使いセキュリティを向上させようという流れがある。この場合、WebブラウザーがたくさんのHTTPS通信を行うと問題が起こる。従来のHTTP/1.1では、1回のリクエスト・レスポンスごとにTLSのハンドシェイクが発生する。このためデータをやり取りする前のTLSの処理だけで時間を浪費してしまう。これは特に低速なモバイル環境では、画面にコンテンツが表示されるまでの時間に大きく影響する。

 これに対し、SPDYは複数の複数のリクエスト・レスポンスを1本のTLSセッションでまとめて行える。これにより、ハンドシェイクが1回で済む。

 SPDYはHTTPSで利用できるが、暗号化されていないHTTPでは利用できない。WebブラウザーとWebサーバーがSPDYに対応していたとしても、HTTPでは従来通り複数のTCPセッションが作られることになる。

 そのため、平文のHTTPよりもむしろ暗号化を行っているHTTPSのほうが高速なブラウジングが可能になる。このようなセキュリティ以外の利点も、HTTPSを標準で利用する強力な後押しとなっている。

ここからは会員の登録が必要です。