Тема

Как кэшировать OG-изображения

Кэширование OG-изображений означает отдачу ранее сгенерированного превью для соцсетей из CDN вместо повторной отрисовки при каждом расшаривании. FastOG кэширует идентичные изображения на периферии в течение года — один и тот же URL возвращает закэшированный PNG без учёта в вашей квоте и практически с нулевой задержкой, поэтому большая часть OG-трафика сайта никогда не обращается к рендереру.

Почему кэширование важно

Социальный шеринг запускает запрос со стороны краулера платформы. Если бы каждый шеринг приводил к повторной отрисовке, вы бы тратили квоту и время ожидания на идентичный контент. Агрессивное кэширование — с ключом на основе содержимого изображения — превращает «каждый шеринг стоит 1 отрисовку» в «первый шеринг стоит 1 отрисовку, а каждый последующий — бесплатно».

Контентно-ключевая модель, на которой это работает

FastOG использует URL-адреса с подписью контента: URL является чистой функцией параметров. Одинаковый заголовок + шаблон → одинаковый URL. Это означает:

  • Edge-сеть FastOG хранит изображение по этому URL.
  • Один и тот же контент, опубликованный 10 000 раз → один рендер, один учёт квоты, 9 999 попаданий в кэш.
  • Изменение контента → другой URL → один новый рендер.
GET /api/v1/og?title=Hello&template=default&key=...&s=...   → render (1 quota count), then
GET /api/v1/og?title=Hello&template=default&key=...&s=...   → cached (0 counts, instant)
GET /api/v1/og?title=Changed&template=default&key=...&s=... → render (1 quota count)

Заголовки кэширования FastOG

FastOG возвращает Cache-Control: public, max-age=31536000, immutable (один год) для отрисованных изображений. Обложка обслуживается с периферии FastOG в два уровня: кэш рендеринга перед fastog.com и долговечное объектное хранилище за ним. Повторные запросы обрабатываются без повторной отрисовки, а X-FastOG-Worker-Cache в ответе указывает, какой уровень ответил (HIT, R2, MISS).

Поскольку долговечная копия не зависит от рендерера, обложки, которые были запрошены хотя бы один раз, продолжают обслуживаться, даже если сервис рендеринга FastOG временно недоступен — сбой не приводит к пустому превью, которое уже было сгенерировано. Обложка, которая никогда не рендерилась ранее, — единственный случай, когда требуется рендерер, и в этом случае FastOG отвечает изображением, а не ошибкой:

Ситуация Что получает краулер
Обложка уже отрисована обложку с периферии или из долговечного хранилища
Не отрисована, сервис рендеринга работает обложку, отрисованную по запросу
Не отрисована, сервис рендеринга временно недоступен собственное изображение страницы, переданное в URL (фото вашего товара), или нейтральная карточка — но никогда страницу с ошибкой

Если сам запрос недействителен (подделанная подпись, отсутствующий title), вы по-прежнему получаете соответствующий ответ 4xx.

Изменение уже опубликованного изображения

Что вы изменили Что делать
Содержимое (заголовок, цена, фото) ничего: содержимое находится в URL, поэтому новое содержимое — это новый URL, который рендерится заново
Шаблон или значение по умолчанию для рендеринга увеличьте версию для сброса кэша (FASTOG_CACHE_BUST), чтобы каждый URL получил новый параметр v
Вам нужно повторно отрендерить тот же URL обратитесь в поддержку, чтобы очистить этот конкретный URL — очистка по точному URL не доступна как публичный endpoint

Ранее опубликованные ссылки продолжают работать и показывать то изображение, которое они обещали, если только вы не очистите этот точный URL.

Кэширование собственных og:image (самостоятельный хостинг)

Если вы храните изображения самостоятельно, а не используете кэш FastOG, применяйте те же правила:

Шаг Подробности
Ключ кэша = хэш содержимого Храните по хэшу данных, а не по изменяемому имени файла
Долгий TTL max-age=31536000, immutable для стабильного содержимого
Версионированные URL Добавляйте хэш/версию при изменении содержимого
CDN перед сервером Позвольте CDN обрабатывать повторные запросы

FAQ

Действительно ли повторные публикации не расходуют рендеры?

Да. Идентичные URL попадают в периферийный кэш и никогда не доходят до рендерера — квота не расходуется.

Как долго FastOG кэширует изображение?

Один год (immutable). Спустя долгое время после первого рендера опубликованная карточка отдается из кэша.

Что если я хочу, чтобы изображение обновлялось (например, актуальная цена)?

Измените параметр (цену) → новый URL → новый рендер. Стабильный контент остается в кэше; динамический контент обновляется, когда вам это нужно.

Попробуйте бесплатно — регистрация не требуется

Предпросмотр и тестирование динамических OG-изображений за секунды.

Открыть бесплатный тестер OG-изображений

A BeCaSimulations site