『Webページ速度改善ガイド』 4章
レンダリング処理の基礎知識
4.1 スムーズなUIとスムーズでないUIの違い
動きの滑らかさ
- スクロール操作・アニメーションが発生した時、レンダリング処理が発生する
- この処理に時間がかかると、スムーズでないUIになる
- RAILモデル(1.4節)によると、1フレームあたりの処理を10msec以内に収めるべき
UIの応答速度
- ユーザーのアクションに対する応答を早くする
- 応答の例: ボタンをクリック -> ボタンの見た目を変更
- RAILモデルによると、ユーザーアクションが発生してから100msec以内に応答するべき
- ユーザーのアクションに対する応答を早くする
4.2 レンダリング処理の基本
FPS(frames per second)
- 1秒間に何回フレームを更新したか
- レンダリング処理がスムーズかの基準
- Webでは60fpsを目標とする
- 一般的なディスプレイのリフレッシュレートが60Hzのため。
- 1回のフレーム更新にかけられる時間は16.7msec
1フレームの中の処理
レンダリング処理の最適化
レンダリング処理のパイプライン
- スクリプトの処理
- スタイルの処理
- レイアウトの処理
- 画面の各要素がどのような位置関係で配置されるかを決める
- offsetTop, offsetWidthなどのプロパティを参照すると、レイアウト処理を誘発して重くなる
- ペイントの実行
- 算出されたスタイル・レイアウトに基づいてディスプレイに表示する
Webアニメーション
- DOMアニメーション
- jsでDOM要素のstyleを連続的に更新
- CSS Transitions/Animations
- Web Animations
- DOMアニメーション
4.3 レンダリング処理の調査と計測
感想
- 2,3章のネットワーク処理とは異なり、普段意識しない部分だったので勉強になった
- Long Tasks APIは活用できそう