Angularのアプリをパフォーマンスチューニングするにあたって次の対応をした。
カッコがきは時間がかかるので後回しにした。
カッコがきは時間がかかるので後回しにした。
- 描画
- モジュールの最新バージョンへの更新
- 既存処理の高速化
- For文へのID指定
- (DOM操作量を減らす)
- (Virtual DOM with CDK)
- (AOTコンパイル)
- (Angular Ver up)
- (Lazy load)
- (不要画面の削除)
- DLサイズ
- 不要モジュールの削除
- モジュールの最新バージョンへの更新
- コンパイルオプションの変更
- ビルドハッシュ
- (AOTコンパイル)
- (Angular Ver up)
- (不要画面の削除)
ただ、結局これではせいぜい20%前後の改善しか見られなかった。
(前後のパフォーマンスはGoogle ChromeのLighthouseを使った。ただ、あれの測定結果も安定しないからちょっと微妙)
使用しているライブラリの都合によりAOTは無効にしていた。
が、改めて検証してみると、やはりAOTを有効にすることの方がよっぽど影響が大きくて既存の40%程度の改善が見られた。
ただし、AOTを有効にすると一部の書き方を変更しないといけないのでその点だけが厄介だった。
具体的には例えば、
import chartjs-plugin-annotation;
を
import * as chartjsAnnotation from chartjs-plugin-annotation;
のようにして、必ずchartjsAnnotationを使うようにするというもの。
この対応にコストを払うのが惜しく、先延ばしにしてきたが、ついにそのツケを払うときが来た模様。
これで高速化されると期待。(原理的にAOTが有効になれば当然高速になるけれど)