※この記事は「無いなら作ろう、AIエディタの拡張機能。Backlog用の拡張機能を作ってみた。」の技術的な深掘り記事です。
キャッシュの仕組み
概要
キャッシュは、Backlog API の呼び出し回数を減らし、429(Too Many Requests)エラーを避けるための仕組みです。一度取得したデータを一時的に保持し、同じデータが必要なときに API を再度呼ばずに、再利用が可能。
使い方
Backlog-IDE-Extensionでは、課題詳細やメタデータ(ステータス・課題種別・ユーザーなど)をキャッシュし、API 呼び出しを削減。
キャッシュの種類
├── 課題詳細キャッシュ(メモリ・10分間)
├── メタデータキャッシュ(workspaceState・同期で取得)
├── 課題一覧キャッシュ(Webview の getState/setState)
├── プロジェクト一覧キャッシュ(workspaceState)
└── リポジトリ一覧キャッシュ(Git設定)
具体的な構造
1. 課題詳細キャッシュ(IssueCacheService)
- 保存場所:メモリ(Map)※有効期限10分(TTL)
- 用途 :課題詳細を開いたとき、同じ課題を再度開く際に API を呼ばない
2. メタデータキャッシュ(SettingsManager)
- 保存場所:
workspaceState(backlog.metadataCache) - 用途 :課題作成・課題一覧のフィルタなどで利用
3. 課題一覧キャッシュ(IssueList.vue)
- 保存場所:Webview の
vscode.getState/setState - 用途 :タブ切り替え時(設定→課題一覧)に再取得しない ※プロジェクト変更・更新時にクリア
4. セッション管理
- 保存場所:
workspaceState(currentSessionId) - 役割 :再起動時はセッションIDが変わるため、課題一覧キャッシュを無効化
キャッシュのいいところ
早く表示&API呼び出し削減、に貢献。
- API 呼び出しの削減:Backlog API 呼び出し過多(429)エラーを防ぐ
- 速度向上:キャッシュヒット時はすぐに表示、毎回ローディングが発生しない
まとめ
このプロジェクトでは、多層キャッシュで API 呼び出しを最小化し、429 エラーを回避しています!