Як кешувати 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 → новий рендер. Стабільний контент залишається в кеші; динамічний контент оновлюється, коли вам це потрібно.