Vercel Blob consistent reads:把最新性、並行寫入與快取分開設計
private get() 與 presignUrl() 可用 useCache: false 繞過 CDN。覆寫同一 pathname 後,預設讀取最多可能在 60 秒內回傳舊版本。
變更內容
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