Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cache APIを世代で無効化する
Search
nyamadan
September 23, 2026
Programming
48
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cache APIを世代で無効化する
Cloudflare WorkersのCache APIとDurable Objectを、つかって古いキャッシュを即座に無効化する取り組みを紹介します
nyamadan
September 23, 2026
More Decks by nyamadan
See All by nyamadan
GitLabとOrvalを活用したフロントエンドテスト
nyamadan
0
1.9k
Other Decks in Programming
See All in Programming
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
140
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
320
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
110
Are APIs Still Relevant in the AI Era?
soyuka
0
330
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
240
iOSDC2026登壇資料.pdf
riofujimon
0
200
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.1k
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
3.7k
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
310
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
4.5k
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Scaling GitHub
holman
464
140k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
sira's awesome portfolio website redesign presentation
elsirapls
0
430
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
を世代で 無効化する Cloudflare Workers 実践 LT Cache API でキャッシュ世代を管理した話 Durable
Object 2026.09.24 フロントエンドエンジニア nyamadan Web 1
自己紹介 nyamadan. Web フロントエンドエンジニア が好きです 仕事ではGoogle CloudやNext.jsを使っています 3D 2
今日話すこと キャッシュのバージョン管理 キャッシュは消さない 番号を変えて 参照するキャッシュを切り替えた 番号はDurable Objectで管理 キャッシュのバージョン管理に Durable Objectを使った
3
プロダクト 4
作っているもの リーダー AI RSS 取得 1. と で を定期更新 Queue
Cron RSS 要約 2. で記事を3行に整理 Workers AI 3. 閲覧 から記事一覧を読み出す D1 5
技術スタック 主なライブラリとツール / HonoX Hono nanostores Vite アプリ Web クライアント状態
ビルド Tailwind CSS スタイル Zod 入力検証 Vitest テスト 6
品質 も高スコア Lighthouse 7
キャッシュ 8
前提 キャッシュが効きやすい 数時間 の定期更新間隔 RSS 更新の間は同じ読み取りが続くため Cache APIによく当たる 9
課題 更新後は古い値を返したくない 更新 記事は へ保存済み D1 利用者は新しい一覧を期待している。 → 古い キャッシュが応答
更新できたのか利用者には分からない。 10
仕組み 11
キャッシュの流れ 1 初回アクセス をキーに加えてキャッシュを作る 12 から番号を取得 1 Durable Object 2
Cache API 3 D1 4 12 を確認 v2-12 MISS から記事一覧を読む 最新の一覧を取得 結果をCache APIへ保存 v2-12 12
キャッシュの流れ 2 回目のアクセス 2 同じ12を使うためキャッシュに当たる から番号を取得 1 Durable Object 2
Cache API v2-12 HIT 3 キャッシュから応答 D1 を確認 12 は読まない 13
キャッシュの流れ 3 フィード更新 へ保存してから番号を13へ進める D1 1 新しい記事をD1へ保存 2 Durable Object
3 古いキャッシュは残す と の番号を進める 先にデータを更新 12 → 13 v2-12 は別更新。番号の更新完了までは旧世代が読まれ得る D1 Durable Object 14
キャッシュの流れ 4 更新後の初回アクセス の更新成功後、13のキャッシュを新しく作る Durable Object から番号を取得 1 Durable Object
2 Cache API 3 D1 4 13 を確認 v2-13 MISS から記事一覧を読む 更新後の一覧を取得 結果をCache APIへ保存 v2-13 15
キャッシュの流れ 5 次のアクセス 同じ13を使うため新しいキャッシュに当たる から番号を取得 1 Durable Object 2 Cache
API v2-13 HIT 3 新しいキャッシュから応答 D1 を確認 13 は読まない 16
選び方 を選ぶなら Durable Object 世代更新後の読み取りを 新しいキーへそろえたい 世代を順序づける つのObjectが更新を調停 1 配置先への往復がある
遠い場所からは遅延が増える可能性 17
まとめ 番号を進めて参照先を切り替える へ保存 D1 新しい記事を先に書き込む → で番号を進 める Durable Object
キャッシュの世代を12から13へ → 新しいキーで読む 新しい番号の取得後は旧世代を参照し ない 古いキャッシュは削除せず期限切れに任せる 18
余談 19
もう一つの方法 とは Cache-Tag タグを付ける Cache-Tag: feed → する purge へタグを指定
Cloudflare API → 次はMISS 関連キャッシュをまとめて無効化 20
余談 を選ぶなら Cache-Tag 関連するキャッシュを まとめて消したい 通常のGETはそのまま への追加の往復は不要 Durable Object の
タグ単位で無効化 一致するキャッシュをグローバルにpurge は、削除完了ではなく要求の受理を示す purge API HTTP 200 21