Vercel Blob consistent reads:freshness・競合・cache は別々に設計する
private get() と presignUrl() は useCache: false で CDN を迂回できる。同じ pathname を overwrite した後、通常 read は最大60秒前の version を返す可能性がある。
何が変わったか
private get() と presignUrl() は useCache: false で CDN を迂回できる。同じ pathname を overwrite した後、通常 read は最大60秒前の version を返す可能性がある。
Freshness と競合は別
この option が解決するのは read-after-write だけだ。複数 writer では ETag と ifMatch を使い、競合を BlobPreconditionFailedError として検出する。
認可と配信 cache
認可は get() の近くの route handler で行う。browser には private, no-cache、高機密データには no-store が推奨される。
運用モデル
object を immutable asset、mutable state、derived snapshot に分類する。origin read は agent memory、checkpoint、直後の検証に限定する。
リスク
CDN bypass は latency と Fast Origin Transfer を増やす。transaction や多数 writer が必要なら Postgres の方が単純な場合がある。
実務チェック
✓allowOverwrite を棚卸し
✓@vercel/blob ≥ 2.6.1 を確認
✓ETag 競合をテスト
✓origin read 比率を監視