## 概要
[[🦉Another Quick Switcher]]のダイアログを表示させるとき、初期化処理に少し時間がかかる。性能のいい端末では問題ないが、性能の悪い端末ではラグが生じる。
## 解決策
ノートの内容に変更がない場合は、前回使ったキャッシュをそのまま使えるような機構を実装する。
## メモ
`onload`で以下のリスナーを使って、変更を生じた場合のみ最終更新日時を書き換える。
```ts
this.app.metadataCache.on("changed", (file) => {
console.log("changed");
});
this.app.metadataCache.on("deleted", (file) => {
console.log("deleted");
});
```
ダイアログ表示のときにそれが変わっていなければキャッシュを、変わっていたら新規生成を行う。
### 懸念点
- ダイアログを表示のたびに新しいインスタンスが生成される
- のでダイアログの中にキャッシュを保存することはできない
- 外からキャッシュを放り込んでインスタンスを生成すると、ダイアログインスタンスがメモリリークしそう
- DBやファイルなどを使うとそちらのオーバーヘッドの方が時間かかる可能性もある
- モバイルで動くかどうかとかも含めて...
- キャッシュと最終更新日時はグローバルモジュールを用意して、それを利用するのがよさそう
- 検索コマンドごとにキャッシュを管理する必要がある
### ボトルネックはindexingなのか?
速度を計測してみたら、indexingよりもクエリなし状態でのsuggestにかかる時間の方が3倍程度遅いことが分かった。
キャッシュによる高速化対応自体の価値はあるが、この対応をしてもsuggestが速くならない限り、体感速度はあまり変わらなそう...今この対応をやるべきではない気がする。