Тема

Як кешувати 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 не доступне як публічний ендпоінт

Посилання, які вже були поширені, продовжують працювати та показувати зображення, яке вони обіцяли, якщо ви не очистите саме цей URL.

Кешування власного зображення og:image (самостійний хостинг)

Якщо ви зберігаєте зображення самостійно, а не використовуєте кеш FastOG, застосовуйте ті самі правила:

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

FAQ

Чи справді повторні публікації коштують 0 рендерів?

Так. Ідентичні URL-адреси потрапляють у крайовий кеш і ніколи не досягають рендерера — жодна одиниця квоти не витрачається.

Як довго FastOG кешує зображення?

Один рік (immutable). Задовго після першого рендеру опублікована картка обслуговується з кешу.

Що, якщо я хочу, щоб зображення оновлювалося (наприклад, актуальна ціна)?

Змініть параметр (ціну) → новий URL → новий рендер. Стабільний контент залишається в кеші; динамічний контент оновлюється, коли вам це потрібно.

Спробуйте безкоштовно — реєстрація не потрібна

Переглядайте та тестуйте динамічні OG-зображення за лічені секунди.

Відкрити безкоштовний тестер OG-зображень

A BeCaSimulations site