今日はJavaScriptの読み込み高速化手法についていろいろと調べていたのでまとめておきたいと思います。
たぶん暫くの間は覆ることは無いと思いますので・・・。
Contents(目次)
はじめに
Webページを表示する際に、重要な指針となるひとつの要素に「表示速度」があります。
この表示速度を改善させるためにはいろいろな取り組み方があります。
一般的な取り組み方としては大まかに分けると3つ。
A.Webサーバーのレスポンス高速化
B.HTMLから読み込まれる各ファイルサイズを減らす
C.HTMLから読み込まれるファイル数を減らす
一般的に高速化というとAっぽいのですが・・・・
今回のテーマはJavaScriptなので、ここからは「JavaScript」にスコープを当てて話したいと思います。
JavaScriptの読み込み高速化とは?
JavaScriptにおいて特に問題となるのはBとCになります。
(勿論全部重要なんですが)
Bのファイルサイズの適切化に関してはそんなに難しい話ではなく、所謂「圧縮(難読)化」をすることで
ファイルサイズを小さくしようという話です。Closure Compiler Serviceあたりが有名所ですね。
実際に何を持って圧縮化と言ってるかというと、「変数名を最短文字」にしたり「不要スペースの削除」などがメインです。
あとは圧縮化するライブラリによりますが、不要なループ処理は取り除くとか高機能なのも。
基本テキストファイルなので、勿論文字数が減ればファイル容量も減るわけです。
var sContentsCategoryName = "my works."; var bDevelopmentMode = false; var a="my works.",b=false;
・変数名を最短文字列(aとかb)へ
・イコールの間の半角スペースを取り除く
・var定義は同時に定義できるのでカンマ区切り方式へ変更
この作業はほぼ全般のサイトでやるべき事だとは思うのですが、次のCに関しては「必ずしも」では無いかと思います。
既にファイル数が少ないサイト(5個以内位)では効果の望みは薄いかなと。
読み込みファイル数と速度の関係
そもそもJavaScriptで読み込みファイル数が多くなると遅くなるのはscriptタグをブラウザがどう解釈しているか?
がポイントになります。
HTML解析において、scriptタグは発見した直後にページのレンダリング処理を止めてJavaScriptを実行します。
その実行結果が返却された後に再び途中からレンダリング処理を開始すような動きになります。
上記の図では、以下の3ファイルが存在します。
・headタグ内に書いたhoge.js
・bodyの表示要素前に書いたfuga.js
・body閉じタグの直前に書いたhogefuga.js
どのJavaScriptもポイントとしてその行に入った直後に「読み込み+実行」を行うという事です。
HTMLをブラウザが解析するときは上から読み込んでいきます。なので、まずはhoge.jsが読み込まれます。
次にbodyタグを処理していくのですが、表示要素よりも手前にfuga.jsがあります。
この場合、scriptタグの下にあるh1はまだ表示されることなく、fuga.jsの読み込み+実行が行われます。
実行が完了した後h1タグは表示されます。
ほぼすべての表示要素が出力を終え、表示上は問題なく出ている
コメントを残す