Chromeブラウザ、「Script streaming」と「Code caching」の2つのテクニックで、さらにWebページ読み込み時間を短縮へ
Chromium Blogで、「New JavaScript techniques for rapid page loads」(迅速なページロードのための新たなJavaScriptテクニック)というポストが投稿され、Webページのロードをさらに高速化する「Script streaming」と「Code caching」という2つのテクニックが紹介されています。
この2つのテクニックは、最新バージョンとなる41と次のバージョンの42でそれぞれ導入されるとのことです。
別スレッドでのパースにより高速化
「Script streaming」は、async/defer属性が付いたJavaScriptについてはダウンロードと並行して別スレッドでパースを実行することで、ページのロードを高速化すると説明されています。下記はブログ記事から引用。
Starting in version 41, Chrome parses async and deferred scripts on a separate thread as soon as the download has begun. This means that parsing can complete just milliseconds after the download has finished, and results in pages loading as much as 10% faster. It's particularly effective on large scripts and slow network connections.
バージョン41からは、asyncとdeferredのスクリプトではダウンロードの開始と共に別のスレッドでパースを行う。つまりこれは、ダウンロードが完了した数ミリ秒後にはパースも完了するということだ。その結果、ページのローディングは10%程度速くなるだろう。これは特に、大規模なスクリプトと遅いネットワーク回線において効果的だ。
async/deferは、実行のタイミングを非同期にするなどでページの読み込みを高速化するものですが、それをWebブラウザ側でさらに効率化する実装のようですね。
コンパイル済みのコードをキャッシュすることで高速化
「Code caching」は、コンパイル済みのJavaScriptコードを高度なキャッシュによって保持することで、ページのロードを高速化するとのことです。
Chrome 42 introduces an advanced technique of storing a local copy of the compiled code, so that when the user returns to the page the downloading, parsing, and compiling steps can all be skipped. Across all page loads, this allows Chrome to avoid about 40% of compile time and saves precious battery on mobile devices.
Chrome 42ではコンパイル済みコードのローカルコピーの保存テクニックを拡張し、いちど表示したページにユーザーが戻ってきた場合、(そのページのJavaScriptの)ダウンロードとパースとコンパイルはすべてスキップできる。あらゆるページのロードにおいて、これはChromeは40%ものコンパイル時間を削減し、モバイルデバイスの貴重なバッテリの消費を抑えることになる。
同じWebページを複数回訪問することはよくあることですから、この実装でそのときのWebページの表示が高速化されるのであれば、体感的にも高速化が実感できるぐらいになるのではと期待してしまいます。
あわせて読みたい
YouTubeがMySQLをスケールアウトする「Vitess」をオープンソースで公開。Kubernetesに対応
≪前の記事
Amazon EBSが最大16テラバイト、2万IOPSまで拡張可能に。全リージョンで利用可能