v3.1.1 - キャッシュヒット率0%問題の修正
AWS CLI Cache v3.1.1 - 重要なバグ修正
🐛 キャッシュヒット率 0%問題の完全解決
このリリースでは、AWS CLI Cache が全く機能しなかった根本的な問題を修正しました。
修正された問題
症状: キャッシュが全く効かない(毎回 AWS API を呼び出し)
原因: ファイル作成時と検索時で異なるタイムスタンプを使用
影響: キャッシュヒット率が 0%
技術的詳細
修正前の問題
# ファイル作成時(例: 12:00:00)
timestamp=$(date +%s) # 1766024800
filename="hash_3600_1766024800_12345.cache"
# ファイル検索時(例: 12:00:03、3秒後)
timestamp=$(date +%s) # 1766024803(異なる!)
search_pattern="hash_3600_*_12345.cache" # マッチしない修正後の解決策
# シンプルなファイル名(タイムスタンプなし)
filename="hash_3600_12345.cache"
# ファイルシステムのmtimeでTTLチェック
file_mtime=$(stat -f %m "$cache_file")
expiry_time=$((file_mtime + file_ttl))修正内容
-
ファイル名生成の修正
- タイムスタンプを完全に削除
- 同じコマンド + 同じ TTL = 常に同じファイル名
-
TTL 有効性チェックの改善
- ファイル名のタイムスタンプ → ファイルシステムの mtime
- より正確で信頼性の高い TTL チェック
-
正規表現パターンの修正
- ファイル名形式に合わせて正規表現を調整
- 3 フィールド → 2 フィールドに変更
影響を受けた関数
get_cache_file()- ファイル名生成の修正find_valid_cache_file()- キャッシュ検索の修正is_cache_valid()- TTL チェックの修正aws_cached()- verbose 出力の修正
修正効果
| 項目 | 修正前 | 修正後 |
|---|---|---|
| キャッシュヒット率 | 0% | 正常動作 |
| ファイル名の一意性 | 毎回異なる | 同じコマンドで同一 |
| TTL チェックの精度 | 不正確 | 正確 |
| 正規表現マッチ | 失敗 | 成功 |
動作確認例
# 1回目の実行(キャッシュミス)
$ aws_cached --verbose sts get-caller-identity
[CACHE] Miss: Executing AWS CLI
[CACHE] Saved to: ~/.cache/aws-cli/default/sts/global/get-caller-identity/abc123_3600_12345.cache
# 2回目の実行(キャッシュヒット)
$ aws_cached --verbose sts get-caller-identity
[CACHE] Hit: ~/.cache/aws-cli/default/sts/global/get-caller-identity/abc123_3600_12345.cache
[CACHE] Age: 2s, Remaining: 3598s, TTL: 3600sアップグレード方法
# 最新版をダウンロード
curl -O https://raw.githubusercontent.com/hacker65536/aws-cli-cache/v3.1.1/aws_cache.sh
# または git pull
git pull origin main互換性
- ✅ 既存のキャッシュファイルとの互換性を維持
- ✅ 既存の設定ファイルをそのまま使用可能
- ✅ 環境変数の変更不要
重要度
🔴 高: この修正により、AWS CLI Cache が本来の性能を発揮できるようになります。v3.0.0 以前をご利用の方は、できるだけ早くアップグレードすることを強く推奨します。
Full Changelog: v3.1.0...v3.1.1