Vercel Blob consistent reads: tách freshness, concurrency và cache
get() và presignUrl() private hỗ trợ useCache: false để bỏ qua CDN. Sau khi overwrite cùng pathname, read mặc định có thể trả version cũ trong tối đa 60 giây.
Điểm mới
get() và presignUrl() private hỗ trợ useCache: false để bỏ qua CDN. Sau khi overwrite cùng pathname, read mặc định có thể trả version cũ trong tối đa 60 giây.
Freshness không phải concurrency
Option chỉ giải quyết read-after-write. Nhiều writer cần ETag và ifMatch để conflict tạo BlobPreconditionFailedError thay vì làm mất thay đổi.
Auth và delivery cache
Kiểm tra authorization trong route handler cạnh get(). Vercel khuyên private, no-cache cho browser và no-store cho dữ liệu rất nhạy cảm.
Mô hình vận hành
Phân loại object thành immutable asset, mutable state hoặc derived snapshot. Chỉ dùng origin read cho agent memory, checkpoint và xác minh tức thì.
Rủi ro
Bỏ qua CDN làm tăng latency và Fast Origin Transfer. Khi cần transaction hoặc nhiều writer, Postgres có thể đơn giản hơn.
Checklist
✓Kiểm kê allowOverwrite
✓Xác nhận @vercel/blob ≥ 2.6.1
✓Test xung đột ETag
✓Theo dõi origin read