開発ツールの[Chromeネットワーク]タブを使用してページの読み込みを見ると、次のリンクで次のタイミングを受け取ります。
http://www.seed-city.com/barneys-farm-seeds/liberty-haze
102 requests | 131.24KB | 8.41s (onload: 8.50s, DOMContentLoaded: 6.61s)
102 requests | 131.47KB | 8.47s (onload: 8.56s, DOMContentLoaded: 6.82s)
102 requests | 131.45KB | 8.71s (onload: 8.79s, DOMContentLoaded: 7.06s)
ここで、1つの(やや単純な)変更を行います。
103 requests | 110.16KB | 3.77s (onload: 3.86s, DOMContentLoaded: 2.03s)
103 requests | 110.17KB | 3.85s (onload: 3.94s, DOMContentLoaded: 2.21s)
103 requests | 110.16KB | 4.20s (onload: 3.50s, DOMContentLoaded: 2.28s)
現在のページの[ネットワーク]タブから出力される一般的なHARログは次のとおりです。
http://pastebin.com/pM5Dd1Fw
重要なのは、ブラウザが何かを実行するのに5秒近く待機していることを理解することです(関連する行を表示するためだけに挿入されます)。
{
"startedDateTime": "2012-09-29T04:58:07.861Z",
"time": 4831,
"request": {
"method": "GET",
"url": "http://www.seed-city.com/barneys-farm-seeds/liberty-haze",
"httpVersion": "HTTP/1.1",
...
},
"cache": {},
"timings": {
"blocked": 0,
"dns": 16,
"connect": 129,
"send": 0,
"wait": 4677, // <<< Right here
"receive": 8,
"ssl": -1
}
}
そして、slow.html
ページのタイミング:
{
"startedDateTime": "2012-09-29T05:04:51.624Z",
"time": 92,
"request": {
"method": "GET",
"url": "http://example.com/t/slow.html",
"httpVersion": "HTTP/1.1",
...
},
"timings": {
"blocked": 0,
"dns": 7,
"connect": 38,
"send": 0,
"wait": 44, // <<< Right here
"receive": 1,
"ssl": -1
},
"pageref": "page_3"
}
それは4677ms
対44ms
です。その更新されたページの典型的なHARログは次のとおりです。
http://pastebin.com/Jgm1YyU3
では、これらの(非常に現実的で具体的な)改善を達成するために私は何をしましたか?Javascriptをbody
タグの一番下に移動しました:
http://pastebin.com/H9ajG99H
これにより、2倍の改善が見られます。script
まず、ブラウザがブロックプロセス(呼び出し)との対話を開始する前に、ブラウザが続行してコンテンツをロードできるようにします。したがって、ページの読み込みが速いように見えるという理由だけで、顧客はより高速なサイトに「気付く」でしょう(実際には、ページの読み込みを許可しているだけの場合)。次に、body
タグが基本的に完全にロードされるまで待ってから、そのコンテンツでモンキーを開始します。
また、ファイルの更新を長時間チェックしないようにブラウザに指示するキャッシュディレクティブをヘッダーで使用していないようです。つまり、TwitterとFacebookのアイコンは、ブラウザがサーバーに再確認する必要があると考えているように見えます。これにより、理論的には、それほど頻繁ではない場合を除いて、ラウンドトリップが不要になります。しかし、「待機」に費やした時間:
twitter_aqu_64.png 1.32s
ajax-loader.gif 1.31s
ssl-icon.jpg 1.31s
現在、私はキャッシュ制御の専門家ではありません。それは少し暗い芸術です。しかし、それらのタイミングは、そこで何かが起こっているのではないかと私に思わせます。
キャッシュ制御の詳細については、次の回答を試してください。
HTMLキャッシュコントロール