Vercel Blob consistent reads:freshness・競合・cache は別々に設計する

Tech
閲覧数 3

private get()presignUrl()useCache: false で CDN を迂回できる。同じ pathname を overwrite した後、通常 read は最大60秒前の version を返す可能性がある。

Vercel Blob consistent reads:freshness・競合・cache は別々に設計する
private Blob の useCache: false を agent memory にどう使うか。ETag、認可、browser cache まで分離して解説。

何が変わったか

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 比率を監視

Sources