0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AIエディタ拡張機能】技術詳細:キャッシュについて

0
Posted at

※この記事は「無いなら作ろう、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 エラーを回避しています!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?