Vercel Blob consistent reads:把最新性、並行寫入與快取分開設計

Tech
瀏覽 3

private get()presignUrl() 可用 useCache: false 繞過 CDN。覆寫同一 pathname 後,預設讀取最多可能在 60 秒內回傳舊版本。

Vercel Blob consistent reads:把最新性、並行寫入與快取分開設計
useCache: false 可讀取 private Blob 最新覆寫內容,並結合 agent memory、ETag、授權與瀏覽器快取。

變更內容

private get()presignUrl() 可用 useCache: false 繞過 CDN。覆寫同一 pathname 後,預設讀取最多可能在 60 秒內回傳舊版本。

最新性不等於並行控制

此選項只解決 read-after-write。多個 writer 需要 ETag 與 ifMatch,讓衝突成為 BlobPreconditionFailedError,而不是靜默遺失更新。

授權與傳遞快取

應在靠近 get() 的 route handler 內授權。Vercel 建議瀏覽器使用 private, no-cache,高度敏感資料使用 no-store

維運模型

把物件分為 immutable asset、mutable state 與 derived snapshot。只對 agent memory、checkpoint 與寫後驗證使用 origin read。

風險

繞過 CDN 會增加延遲與 Fast Origin Transfer。需要 transaction 或大量 writer 時,Postgres 通常更簡單。

實務清單

盤點 allowOverwrite

確認 @vercel/blob ≥ 2.6.1

測試 ETag 衝突

監控 origin read

來源