Vercel Blob consistent reads: свежесть, конкуренция и кэш — разные задачи
Private get() и presignUrl() поддерживают useCache: false для обхода CDN. После overwrite одного pathname обычное чтение может до 60 секунд возвращать старую версию.
Что изменилось
Private get() и presignUrl() поддерживают useCache: false для обхода CDN. После overwrite одного pathname обычное чтение может до 60 секунд возвращать старую версию.
Свежесть не равна concurrency
Опция решает только read-after-write. Нескольким writers нужны ETag и ifMatch, чтобы конфликт завершался BlobPreconditionFailedError, а не потерей изменений.
Auth и delivery cache
Проверяйте доступ в route handler рядом с get(). Vercel рекомендует private, no-cache для браузера и no-store для особо чувствительных данных.
Операционная модель
Разделите объекты на immutable asset, mutable state и derived snapshot. Origin read нужен памяти агента, checkpoint и немедленной проверке.
Риски
Обход CDN повышает latency и Fast Origin Transfer. При транзакциях и множестве writers Postgres может быть проще.
Чек-лист
✓Найти allowOverwrite
✓Проверить @vercel/blob ≥ 2.6.1
✓Тестировать ETag-конфликты
✓Следить за origin reads