Chrome で高速にページを読み込む新しい技術のご紹介
2015年4月10日金曜日
[この記事は Marja Hölttä、Daniel Vogelheim による Chromium Blog の記事 "New JavaScript techniques for rapid page loads" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]
Chrome の主な使命の 1 つは、2008 年に基本原則の 1 つとして明言されて以来、ずっとスピードです。しかし現在、スピードは単に Javascript ベンチマークの結果というだけではなくなりました。ブラウザを使ったすべてのユーザー操作において、ウェブページの表示や読み込みがすみやかに行われることが理想的です。Chrome では、スクリプト ストリーミングとコード キャッシングという 2 つの技術を採用し、特にモバイル端末において白い画面が表示される、イライラする待ち時間を低減しています。
スクリプト ストリーミングは JavaScript ファイルのパースを最適化します。以前のバージョンの Chrome では、パースを開始する前にスクリプトをすべてダウンロードする単純な手法を使っていましたが、このアプローチではダウンロードが終了するまで CPU を活用できていませんでした。Chrome バージョン 41 からは、async と deferred のスクリプトについて、ダウンロードが開始されると同時に別のスレッドでパースが実行されるようになります。つまり、ダウンロードの完了とほぼ同時にパースも完了することになり、ページの読み込みが 10 % ほど迅速に行われることになります。これは特に大がかりなスクリプトやネットワークが遅い状況において効果的です。
コード キャッシングはもうひとつの新たな技術で、特に同じページを何度も表示するときにページが迅速に読み込まれるようになります。通常、ページの JavaScript はページを表示するたびに V8 エンジンによってコンパイルされ、プロセッサが認識できるインストラクションに変換されますが、このコンパイル済みのコードは、コンパイル実行時のマシンの状況やコンテキストによって大きく左右されるため、ユーザーがそのページから移動すると保持されません。Chrome 42 では、このコンパイル済みコードのローカルコピーを保持する拡張技術を採用することで、ユーザーがそのページに戻ってきたときにダウンロード、パース、コンパイルの手順をすべて省略できるようになります。これによってすべてのページでコンパイル時間の 40% を削減し、モバイル端末において貴重なバッテリーの消費量を減らすことができます。
以上が Chrome によってページの読み込み時間を抑える 2 つの技術についての説明になりますが、ページの読み込み時間はブラウザのパフォーマンスを向上する 1 つの手段にすぎません。Chromium プロジェクトで進められるウェブ パフォーマンスのすべての側面における改善を、今後もご期待ください。
Posted by Eiji Kitamura - Developer Relations Team
Chrome の主な使命の 1 つは、2008 年に基本原則の 1 つとして明言されて以来、ずっとスピードです。しかし現在、スピードは単に Javascript ベンチマークの結果というだけではなくなりました。ブラウザを使ったすべてのユーザー操作において、ウェブページの表示や読み込みがすみやかに行われることが理想的です。Chrome では、スクリプト ストリーミングとコード キャッシングという 2 つの技術を採用し、特にモバイル端末において白い画面が表示される、イライラする待ち時間を低減しています。
スクリプト ストリーミングは JavaScript ファイルのパースを最適化します。以前のバージョンの Chrome では、パースを開始する前にスクリプトをすべてダウンロードする単純な手法を使っていましたが、このアプローチではダウンロードが終了するまで CPU を活用できていませんでした。Chrome バージョン 41 からは、async と deferred のスクリプトについて、ダウンロードが開始されると同時に別のスレッドでパースが実行されるようになります。つまり、ダウンロードの完了とほぼ同時にパースも完了することになり、ページの読み込みが 10 % ほど迅速に行われることになります。これは特に大がかりなスクリプトやネットワークが遅い状況において効果的です。
コード キャッシングはもうひとつの新たな技術で、特に同じページを何度も表示するときにページが迅速に読み込まれるようになります。通常、ページの JavaScript はページを表示するたびに V8 エンジンによってコンパイルされ、プロセッサが認識できるインストラクションに変換されますが、このコンパイル済みのコードは、コンパイル実行時のマシンの状況やコンテキストによって大きく左右されるため、ユーザーがそのページから移動すると保持されません。Chrome 42 では、このコンパイル済みコードのローカルコピーを保持する拡張技術を採用することで、ユーザーがそのページに戻ってきたときにダウンロード、パース、コンパイルの手順をすべて省略できるようになります。これによってすべてのページでコンパイル時間の 40% を削減し、モバイル端末において貴重なバッテリーの消費量を減らすことができます。
以上が Chrome によってページの読み込み時間を抑える 2 つの技術についての説明になりますが、ページの読み込み時間はブラウザのパフォーマンスを向上する 1 つの手段にすぎません。Chromium プロジェクトで進められるウェブ パフォーマンスのすべての側面における改善を、今後もご期待ください。
Posted by Eiji Kitamura - Developer Relations Team