「
これは新手の罰ゲーム?」を指して「レンダリング速くなったんだけど?」というのを見かけたのでちょっと解説。
問題の記事は
Firefox高速化テクニック8 | マイコミジャーナル
ページレンダリング高速化
「content.notify.backoffcount」を整数で新規作成して「5」を設定、「nglayout.initialpaint.delay」を整数で新規作成して「0」を設定する。最初の設定はすべてのページをダウンロードし終わる前にレンダリングを開始する指定、後者はページレイアウト情報をすべてダウンロードする前にレンダリングを開始する指定となる。
英語がチンプンカンプンの私でも辞書片手に調べようかって思うくらいの怪しい解説です。
参考にする情報は以下の3つくらいでいいでしょうか。
Content.notify.backoffcount - MozillaZine Knowledge Base
-1
No limit on timer-based reflows (Default)
0
Don't do any timer-based reflows.
Any positive integer
The maximum number of timer-based reflows to perform.
Content.notify.interval - MozillaZine Knowledge Base
The minimum number of microseconds (1 second = 1,000,000 microseconds) between reflows. (Default: 120,000)
Nglayout.initialpaint.delay - MozillaZine Knowledge Base
The number of milliseconds to wait before first displaying the page. (Default: 250)
マイゴミwは「
content.notify.backoffcount」を「ページをダウンロードし終わる前にレンダリングを開始する指定」と書いてますけれど、これだけで
間違いだと分かりますね。
ページをダウンロードしてる途中で定期的(0.12秒毎)にレンダリングしなおす回数の上限を設定する項目です。
そして「
nglayout.initialpaint.delay」はレンダリングを開始するまでの待ち時間(ミリ秒)になります。
つまりマイコミの設定で速くなったと感じるのはレンダリングの開始が0.25秒(あるいはダウンロード終了)後から0秒になったからです(
あくまで見た目の話でレンダリング終了は同じか、カスタマイズした方が体感できない程度に遅くなりますあとで受け取ったデータが解析済みのレイアウトに影響しないページなどはカスタマイズした方が早く終わりますね orz)。
ところでこのカスタマイズは適切なんでしょうか?
よく考えて欲しいのは、待ち時間0秒でレンダリングするべき情報があるのかという点です。
実際は二度目(0.12秒後)のレンダリングで表示されてるような気がしませんか?
例えば、
Firefox高速化テクニック8 | マイコミジャーナルのhtmlソースを見ると
</head>まで 1,441バイト
html全文が 67,145 バイト
mod_base.cssが 24,080バイト
mod_contents.cssが 52,602バイト
……
私の通信環境はADSL 8Mでだいたい200〜700KB/sくらいの速度です。 最初に受け取るであろうパケットではレンダリングするべき情報のない</head>までが精一杯に思えます。
仮に通信速度が300KB/sと仮定します。
大雑把に</head>を受け取るのが0.005秒後、htmlを読込終わるのが
0.223秒後になります。
CSSもあるのでこれだけではダメですが、話を簡単にするためこれだけでレンダリングを考えると
1回目(0.00秒後)表示するものなし
2回目(0.12秒後)スクロール後の半ばまでほぼ表示可能
3回目(
0.223秒後)読み込み終了後の表示
なるほどデフォルトでは
0.223秒後からのレンダリングになりますから0.12秒後にある程度見えてると速くなった気がするというもの。
では「
セコメントをする