Модель B

Контент живёт на d-cms, не на Blob клиента

JSON и фото сайта хранятся в tenant-хранилище d-cms. Сайту не нужен свой Vercel Blob — он читает /api/v1/sites/:siteId/content и показывает CDN-URL картинок.

Лимиты тарифа

На 80% — предупреждение в кабинете. На 100% загрузка фото блокируется. Правки JSON небольшого размера всё ещё проходят. Хранилище входит в тариф; отдельная оплата за овердж — позже.

Сжатие фото

Оригинал больше 10 МБ отклоняется. Длинная сторона режется до 1920 px, файл сохраняется как WebP. Публичный URL отдаёт CDN Vercel Blob.

Сайт читает так

NEXT_PUBLIC_DCMS_URL=https://<d-cms>
DCMS_SITE_ID=site_…
DCMS_SITE_TOKEN=…   # тот же секрет, что CMS_SECRET

import { getHostedContent as getContent } from "d-cms";
const tree = await getContent(process.env.DCMS_SITE_ID, {
  token: process.env.DCMS_SITE_TOKEN,
});
Создать кабинетdocs/HOSTED_CONTENT.md