📑
TTL, メタデータ, SWR(Stale-While-Revalidate)?
とても良い質問です!
この文に出てくる TTL・カスタムメタデータ・SWR(Stale-While-Revalidate) は、キャッシュの高度な制御や効率的なデータ更新のためのキーワードです。
ひとつずつ、噛み砕いて説明します👇
✅ 1. TTL(Time To Live)
「このデータは何秒間だけ有効とするか」という有効期限のこと。
例:
kv.put("user:123", "{name: 'Taro'}", { expirationTtl: 60 }); // 60秒後に自動削除
- TTLを設定すると、そのデータは**指定時間が経過したら自動的に削除(パージ)**されます
- これにより、古いキャッシュを自動的にクリーンアップできます
✅ 2. カスタムメタデータ(Custom Metadata)
KVに保存する「値」とは別に、追加の情報(メタデータ)を付けられる機能。
例:
kv.put("article:123", "記事の内容", {
metadata: { version: 1, author: "admin", category: "news" }
});
- メタデータは検索・条件分岐・管理目的に使える
- Cloudflare Workersでは
getWithMetadata()
で同時に取得可能
✅ 3. SWR(Stale-While-Revalidate)
「キャッシュが古くても一旦それを返し、裏で最新データを取りに行く」キャッシュ戦略。
流れイメージ:
- ユーザーがアクセスする
- 古いデータ(Stale)をすぐに返す(ユーザー体験を落とさない)
- その裏で非同期で新しいデータを取得&キャッシュを更新する
こうなると便利:
- ページ表示がとにかく速い
- でも裏で自動的に最新情報を取ってくれるので安心
- → ユーザーには**「速くて、新しい」状態**を保てる
✅ まとめ
用語 | 意味 | 役割 |
---|---|---|
TTL | キャッシュの寿命時間 | 古くなったら自動削除 |
カスタムメタデータ | データに付与できる追加情報 | 検索やフィルター、バージョン管理など |
SWR | 古いデータを使いつつ裏で更新 | 高速かつ常に最新を保てるUX改善手法 |
Cloudflare Stackを使えば、こうした**柔軟なキャッシュ設計(速度・正確さ・可用性)**をプログラムで自在に組めるのが強みです。
興味があれば、「SWRパターンをKVで実装するコード例」や「TTL+メタデータ管理設計」もご紹介できますよ。どうしますか?
Discussion