Тема

Принудительное обновление кэша Open Graph для Facebook

Вы можете принудительно обновить кэш Open Graph для Facebook, поскольку Facebook — единственная среди крупных платформ — предоставляет программный способ сделать это. Либо используйте кнопку Scrape Again в Sharing Debugger для отдельной ссылки, либо вызовите endpoint scrape в Graph API с токеном доступа приложения. Невозможно принудительно обновить кэш для WhatsApp, LinkedIn или X: они не публикуют такого API ни для кого.

Что сбивает с толку всех

Meta кэширует превью ссылки по ключу URL страницы и хранит собственную копию изображения. Она не перечитывает вашу страницу, чтобы заметить, что og:image теперь указывает куда-то ещё.

Поэтому этот сценарий не работает, хотя именно его пробуют чаще всего:

Изменить обложку → URL og:image новый → предположить, что Facebook подхватит её → этого не происходит.

Новый URL изображения сбрасывает кэш CDN изображений. Он ничего не делает с кэшем Meta, привязанным к странице. Чтобы сдвинуть Facebook с места, нужно сообщить Meta, что страница изменилась.

Кэш Ключ Очищается с помощью
Кэш вашей страницы / CDN URL страницы очистки кэша
Кэш превью ссылок Meta URL страницы эндпоинта scrape или Sharing Debugger
Копия изображения у Meta URL изображения нового URL изображения
Ваш CDN изображений URL изображения нового URL изображения

Вариант 1 — Sharing Debugger (одна страница, вручную)

Откройте developers.facebook.com/tools/debug, вставьте URL страницы и нажмите Scrape Again. Meta повторно загружает страницу и пересобирает кэшированный превью.

Это также лучший бесплатный валидатор, который у вас есть, потому что он сообщает, что Meta фактически нашла, а не то, что вы надеялись там увидеть: отсутствующие или дублирующиеся og:image, недоступные изображения, неподдерживаемые форматы. Две вещи, которые он не делает: он не может затронуть WhatsApp (отдельный кэш в приложении получателя) и не является каталоговым инструментом — он обрабатывает один URL за раз, с ограничением частоты запросов и требует участия человека.

Вариант 2 — Graph API (именно его вызывает плагин)

Программный эквивалент, используемый FastOG, — это POST-запрос к Graph API с scrape=true:

bash
curl -X POST \
  "https://graph.facebook.com/v21.0/?id=$(python3 -c 'import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=""))' 'https://your-store.com/product/example')&scrape=true&access_token=${APP_ID}|${APP_SECRET}"

Четыре важных детали:

  • id — это URL страницы, а не URL изображения. Meta привязывает свой кэш к странице, поэтому обращение к адресу изображения ничего не обновляет.
  • Требуется токен — Meta требует его на этой конечной точке с октября 2017 года. Токена доступа приложения в форме {app_id}|{app_secret} достаточно, и ему не нужен вход пользователя — именно это делает вызов возможным из фоновой задачи.
  • Версии Graph API меняются. FastOG фиксирует протестированную версию Graph API; проверьте актуальную документацию и журнал изменений Meta, прежде чем фиксировать версию в собственном коде.
  • Относитесь к этому как к попытке без гарантий. Meta ограничивает частоту scrape-вызовов, а отказ означает лишь то, что Facebook обновит данные по своему расписанию, а не немедленно — теги на вашей странице уже корректны.

Поскольку вызовы ограничены по частоте, не запускайте их инлайн при каждом сохранении большого каталога. Ставьте их в очередь и дедуплицируйте по URL, чтобы повторные сохранения одного и того же неизменённого товара не расходовали лимит запросов.

Вариант 3 — плагин, который делает это за вас

Плагины, позиционируемые как «обновление кэша Open Graph», делятся на две группы, и только одна из них может исправить Facebook:

Механизм Что очищается Исправляет устаревший превью Facebook?
Добавляет изменяющуюся строку запроса к URL изображения (?v=timestamp) ваш CDN изображений Нет — кэш Meta привязан к странице
Вызывает scrape endpoint для URL страницы кэш превью Meta Да

Перед установкой выясните, к какой группе относится плагин. Параметр с меткой времени — это настоящее исправление для устаревшего изображения и не-исправление для устаревшей карточки Facebook.

FastOG для WooCommerce делает второе, и вам не нужно ничего настраивать. Плагин регистрирует нативные вебхуки продуктов WooCommerce, поэтому сохранение товара запускает повторный scrape Meta для его постоянной ссылки — с постановкой в очередь, дедупликацией в пределах короткого окна и работой по принципу best-effort, чтобы отказ никогда не приводил к сбою сохранения. Это распространяется на страницы товаров (product.created / product.updated); правки категорий и блога не покрываются.

Сторона изображения обрабатывается отдельно и иначе, чем у всех конкурентов: поскольку URL обложки FastOG содержит значения, которые её сгенерировали, изменение цены или фото создаёт новый URL обложки. Meta не может повторно отдать картинку, адрес которой больше не существует.

Где Facebook недостаточно

Платформа Можно ли принудительно обновить? Что происходит на самом деле
Facebook Да — отладчик или scrape=true Запрашивает повторный сбор данных; время распространения варьируется
WhatsApp Нет Превью кэшируется в приложении получателя; API не существует
LinkedIn Нет документированного программного API Повторно считывает данные по своему расписанию; публичные гарантии по времени здесь не даются
X / Twitter Нет документированного программного API Повторно считывает данные по своему расписанию; публичные гарантии по времени здесь не даются
Slack, Discord Нет Недолговечные кэши, которые очищаются сами за минуты или часы

Если превью устарело в WhatsApp, ответ — не инструмент Facebook, а правильная настройка стороны магазина, чтобы следующее считывание было корректным.

Если после успешного сканирования всё ещё отображается старое изображение

Пройдите по этому списку по порядку:

  1. Продолжает ли страница отдавать старый тег? curl -s https://your-store.com/product/example | grep -i 'og:image' — кэшированная HTML-страница с устаревшим og:image полностью сводит на нет сканирование. Очистите кэш страницы.
  2. Выводит ли страница более одного og:image? Если два плагина каждый добавляют свой, краулер берёт первый, который прочитает. Пересчитайте их.
  3. Доступно ли изображение и не заблокировано ли оно? curl -I <image-url> должен возвращать 200 с изображением Content-Type. Социальные краулеры учитывают robots.txt, поэтому изображение по пути Disallow: не загружается так, что это выглядит как повреждённый файл — и curl никогда не воспроизведёт эту проблему, потому что curl игнорирует robots.txt.
  4. Действительно ли изменился URL изображения? Если нет, то и контент не изменился — проверьте, что правка цены/фото дошла до источника, из которого формируется карточка.
  5. Проверьте отладчик ещё раз. Если теперь он показывает новое изображение, а Facebook по-прежнему показывает старую карточку, вы имеете дело с собственным распространением Facebook, а не с вашими тегами.

FAQ

Существует ли официальный API для очистки кеша Open Graph в Facebook?

FastOG использует endpoint scrape (POST https://graph.facebook.com/{version}/?id={page-url}&scrape=true&access_token={token}). Meta документирует Sharing Debugger и программный процесс обхода страниц; точная форма endpoint и версия Graph API могут меняться, поэтому перед самостоятельной реализацией сверьтесь с актуальной документацией Meta.

Нужно ли приложение или токен для Sharing Debugger?

Нет. Это публичный инструмент, и он работает для любого публичного URL. Чего он не умеет — так это запускаться по расписанию или покрывать каталог целиком.

Будет ли повторный скрейпинг стоить мне рендера FastOG?

Обычно нет. URL обложки формируется на основе контента, поэтому если контент не изменился, URL тоже не изменился, и запрос попадает в кеш, не расходуя рендер. Если цена изменилась, изменился и URL — это один новый рендер, и именно тот, который вам нужен.

Исправит ли повторный скрейпинг Facebook мой превью в WhatsApp?

Нет. Это отдельные кеши. Отладчик Facebook по-прежнему полезен как валидатор — он запрашивает страницу так же, как это сделает WhatsApp, и сообщает, что нашёл, — но он не может обновить кеш WhatsApp.

Как долго Facebook хранит превью, если я никогда не отправляю ping?

Meta документирует стандартный период повторного скрейпинга около 24 часов, но точное время распространения может варьироваться. Именно поэтому существуют отладчик и программный путь обхода страниц.

Нужно ли отправлять ping по каждому товару после импорта каталога?

Для этого и существует очередь. Отправка одного запроса на товар в синхронном режиме упрётся в лимит частоты запросов Meta и замедлит запрос мерчанта; при постановке в очередь и дедупликации обход каталога проходит без вреда.

Что будет, если Meta отклонит запрос?

Ничего не сломается. Отклонённый или ограниченный по частоте ping означает, что Facebook обновит данные по своему расписанию, а не немедленно — теги на странице уже корректны, поэтому этот вызов является best-effort, а не жёсткой зависимостью.

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

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

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

A BeCaSimulations site