Facebook Open Graph не очищает кеш

174

У меня проблемы с моими метатегами с Open Graph. Кажется, что Facebook кеширует старые значения моих метатегов. Старые значения для Атрибутов og:titleи og:urlдо сих пор используются, хотя я их уже изменил.

Я запустил Lint на странице моего сайта , и это появилось:

Скриншот Facebook Open Graph lint

Обратите внимание , что существуют два значения для og:titleи og:url, а последняя преобладала. Тем не менее, последние две записи являются старые записи, которые я использовал для этого сайта. Сейчас я использую эти метатеги (вы можете проверить, просматриваете ли вы источник HTML):

<meta property="og:title" content="Smart og rummelig pusletaske fra Petit Amour med god plads til alt &#8211; værdi 1.099 kr &#8211; køb nu kun 599 kr   "/>
<meta property="og:description" content="Pinq.dk - Det gode liv for det halve"/>
<meta property="og:type" content="product"/>
<meta property="og:url" content="http://pinq.dk/tilbud/landsdaekkende/lissy/"/>
<meta property="og:image" content="http://pinq.dk/wp-content/themes/pinq/images/logo-top.png"/>
<meta property="og:site_name" content="Pinq" />
<meta property="fb:app_id" content="161840830532004" />

Почему Facebook кеширует og:titleи og:url? Кто-нибудь испытывает ту же проблему?

Арди Арам
источник
Я полагаю, это как история? Я вижу, что FB получает последние новости titleи urlдля вас (в информационной таблице), так зачем беспокоиться?
ifaour
Проблема в том, что счетчик лайков в Фейсбуке по-прежнему для OLD og: url ( pinq.dk ), который составляет около 200+, а не для pinq.dk/tilbud/landsdaekkende/lissy
Арди Арам
и я не думаю, что это история. Больше og: url устанавливается (предположительно) дважды, последний превалирует. Так или иначе, старые значения, которые уже удалены из кода, все еще влияют на мета значения.
Арди Арам
3
Хорошо, прочитайте это . Особенно раздел « Редактирование метатегов ». Я не уверен, если это связано, но это может помочь. Проверю это позже, извини, приятель!
ifaour
2
Это наверное так. «Вы можете обновить атрибуты своей страницы, обновив теги <meta> своей страницы. Обратите внимание, что og: title и og: type доступны для редактирования только изначально - после того, как ваша страница получит 50 лайков, заголовок станет фиксированным, а после того, как ваша страница получит 10 000 лайков тип становится фиксированным. Эти свойства исправлены, чтобы не удивлять пользователей, которым страница уже понравилась. Изменение тегов заголовка или типа после того, как эти ограничения достигнуты, ничего не дает, ваша страница сохраняет исходный заголовок и тип. ". Спасибо ifaour!
Арди Арам

Ответы:

305
  1. Перейти к http://developers.facebook.com/tools/debug
  2. Введите URL, следующий за fbrefresh=CAN_BE_ANYTHING

Примеры:

  1. http://www.example.com?fbrefresh=CAN_BE_ANYTHING
  2. http://www.example.com?postid=1234&fbrefresh=CAN_BE_ANYTHING
  3. ИЛИ посетить: http://developers.facebook.com/tools/debug/og/object?q=http://www.example.com/?p=3568&fbrefresh=89127348912

У меня была та же проблема прошлой ночью, и я получил это решение с какого-то сайта.

Facebook сохраняет миниатюру кеша. Он не обновится, даже если вы удалите thumnail / изображение с вашего сервера. Но Facebook позволяет обновлять с помощьюfbrefresh

Надеюсь, это поможет.

ПК
источник
30
пары fbrefresh не может быть необходимым в качестве инструмента отладки обновляет объект без него.
alexandru.topliceanu
7
Он не очищает кеш вообще, если вы не используете этот параметр.
Умур Контачи
26
Неверно, добавление этого параметра не имеет никакого значения для работы инструмента отладки - нет никакой ссылки на этот параметр в инструменте отладки или в коде скребка
Igy
7
Нет необходимости использовать параметр fbrefresh, но вам необходимо войти в систему как администратор для приложения FB, которому принадлежит этот домен, иначе кэш не будет обновлен.
Фелипе Брам
3
Я могу убедиться, что добавление параметра fbrefresh работает для меня. Если я указывал URL, он использовал старые данные, хотя отладчик показывал правильные данные. Но как только я использовал отладчик с параметром fbrefresh, тогда даже обычные ресурсы использовали правильные данные.
мороженое
82

Самый голосующий вопрос довольно устарел:

Это только 2 варианта, которые следует использовать с ноября 2014 года :

Для не разработчиков

  1. Используйте отладчик FB: https://developers.facebook.com/tools/debug/og/object
  2. Вставьте URL, который вы хотите восстановить. (Убедитесь, что вы используете тот же URL-адрес, который включен в тег og: url)
  3. Нажмите кнопку Получить информацию снова

Для разработчиков

  1. Сделайте программный вызов GET на этот URL: https://graph.facebook.com/?id=[YOUR_URL_HERE]&scrape=true (см .: https://developers.facebook.com/docs/games_payments/takingpayments#scraping )
  2. Убедитесь, что тег og: url, включенный в заголовок на этой странице, совпадает с тегом, который вы передаете.
  3. Вы можете даже проанализировать ответ json, чтобы получить количество долей этого URL.

Дополнительная информация об обновлении изображений

  • Если URL-адрес og: image остается прежним, но изображение фактически изменилось, он не будет обновляться и не пересматриваться скребками Facebook, даже выполняя вышеуказанное. (даже передача? last_update = [TIMESTAMP] в конце URL изображения не работала для меня).
  • Единственный эффективный обходной путь для меня - назначить новое имя изображению.

Примечание относительно обновлений изображений или видео в ранее опубликованных сообщениях:

  • Когда вы вызываете отладчик, чтобы отменить изменения в тегах og: на своей странице, все предыдущие публикации Facebook с этим URL все равно будут отображать старое изображение / видео. Невозможно обновить все предыдущие посты, и это сделано специально из соображений безопасности. В противном случае кто-то сможет притвориться, что пользователь поделился чем-то, чего он на самом деле не сделал.
Ориол Эстебан
источник
Кажется, он не возвращает количество акций для моей страницы. В этом посте я прочитал: « stackoverflow.com/questions/3581488/… », что вам нужно иметь на странице кнопку « Мне нравится / поделиться» на Facebook, чтобы выходные данные этой конечной точки содержали какую-либо информацию.
WillyBurb
убедитесь, что теги находятся в заголовке, а не в теле страницы - отладчик предупредит вас об этом, но они будут проигнорированы (да, я знаю, вы упомянули об этом, я просто хотел подчеркнуть это)
Simon_Weaver
@ Ориол Эстебан, ты нашел другие способы обновления изображений?
Петр
3
@Oriol Когда я недавно попробовал это, я должен был отправить сообщение на этот URL (согласно developers.facebook.com/docs/sharing/opengraph/… )
Глен Т
1
Любые идеи о том, как поцарапать кеш при изменении URL-адреса og: video ????? Я сделал небольшую правку для своего видео и изменил URL, и Facebook продолжает показывать старую версию! Я, очевидно, сделал царапину в отладке (он показывает там правильно), но не в посте! ... Это сводит меня с ума!
RayOnAir
19

Если у вас много страниц и вы не хотите обновлять их вручную - вы можете сделать это автоматически.

Допустим, у вас есть страница профиля пользователя с фотографией:

$url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_profile;
$user_photo = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_photo;

<meta property="og:url" content="<?php echo $url; ?>"/>
<meta property="og:image" content="<?php echo $user_photo; ?>"

Просто добавьте это на свою страницу:

// with jQuery
$.post(
    'https://graph.facebook.com',
    {
        id: '<?php echo $url; ?>',
        scrape: true
    },
    function(response){
        console.log(response);
    }
);

// with "vanilla" javascript
var fbxhr = new XMLHttpRequest();
fbxhr.open("POST", "https://graph.facebook.com", true);
fbxhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
fbxhr.send("id=<?php echo $url; ?>&scrape=true");

Это обновит кеш Facebook. Если вы используете решение jQuery, взгляните на «response» в console.log - там вы найдете поле «updated_time» и другую полезную информацию.

Жорж александр
источник
это было единственное непротиворечивое решение, которое разрушило бы кэш изображений для меня. использование fbrefreshничего не сделало для моей проблемы.
Hellatan
Привет, я пытаюсь этот метод, но я получаю некоторые ошибки, $ this-> output ('<script type = "text / javascript"> $ (document) .ready (function () {$ .post (" graph) .facebook.com ", {id:" '. $ this-> content [' canonical '].' ", scrape: true}, function (response) {console.log (response);});}); < / script> ');
monsterboy
Я получаю следующую ошибку Uncaught ReferenceError: $ не определено (анонимная функция), любая помощь будет
принята с
@monsterboy $ - это ярлык для функции jQuery. $ .post () аналогичен jQuery.post (). Чтобы использовать эту библиотеку, сначала нужно ее импортировать: <script src = " code.jquery.com/jquery-latest.min.js " type = "text / javascript "> </ script>
Жорж Александр
@ZhorzhAlexandr спасибо за ваш ответ, но я использую WordPress, и у меня есть одно сообщение, которое можно редактировать каждый день, так как я мог бы использовать этот скрипт каждый раз, прежде чем делиться?
Антван
12

Похоже, миниатюра OG не обновляется, даже если передана переменная fbrefresh. Чтобы обновить это, не дожидаясь автоматической очистки, вам нужно изменить имя файла метатега, связанного с миниатюрой, и обновить.

Себ
источник
Согласно другим ответам, вы можете принудительно обновить, используя fbrefreshпараметр URL.
Сэм Муссманн
1
@SamMussmann Кажется, что это только (если это вообще так) обновляет кэш содержимого тега OG, а НЕ фактическое изображение, найденное по URL указанного содержимого. EG: Вы сохраняете теги OG одинаковыми, но изменяете файл изображения (сохраняя его имя), и само изображение остается в кэше. Я не нашел способа очистить это, кроме того, как сказал Себ, вы должны изменить имя файла изображения.
Ник М
@ Ник М Вы нашли какие-нибудь другие решения?
Петр
Решаемые. Я решил это с помощью добавления? T = TIMESTAMP к моему URL-адресу изображения в php-скрипте, где мы генерируем теги. Пока это работает.
Петр
Только что попробовал переименовать файл изображения и обновил значение метатега, тоже не работает.
Антонио Оои
7

У меня были те же проблемы с использованием og:image, несколько попыток переименовать файл или очистить кэш FB не работали ни через отладчик facebook, ни при тестировании через реальную учетную запись.

В новых рекомендациях Facebook говорится, что размер изображения должен быть 1200 x 630 или иметь такое соотношение сторон, это кажется неправильным, единственное, что сработало для меня, - это использование изображения с квадратными размерами .

Edit * Несколько часов я вернулся, чтобы использовать 1200 x 630, и это волшебно сработало, это было волшебно.

Я также переименовал файлы в f * ^ * kfacebook.jpg, не уверен, что это помогло, но это было хорошо.

Уик
источник
6

В основном ответ терпение;)

Я проверил Linter этим утром, и og: title и og: url отображаются правильно, без избыточных значений. Я предполагаю, что FaceBook автоматически очищает свой кеш через определенный интервал. Мне просто нужно подождать.

введите описание изображения здесь

Арди Арам
источник
С Facebook для разработчиков , кэш объекта истекает каждые 7 дней, и Facebook будет автоматически преобразовывать объект при следующем его использовании.
Венугопал
4

Мы просто столкнулись с этим, как оказалось, мы не указали правильный URL-адрес, поскольку реальный URL-адрес имел строку запроса (да, другая страница, если речь идет о боте).

http://example.com/

==!

http://example.com/?utm_campaign=foo

ЛИНТЕР будет поместить в кэш страницы, вы не должны ждать.

Райан Флоренс
источник
4

Да, Facebook автоматически очищает кэш каждые 24 часа: на самом деле Facebook очищает страницы и обновляет кэш каждые 24 часа https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo .

kbsbng
источник
Согласно текущей документации, длительность кэша составляет 30 дней.
Патрикхоули
1
обновленная ссылка для этой информации - developers.facebook.com/docs/plugins/faqs - вы можете настроить ее на более частую
очистку
4

Ооооо, наконец то помогло (я пользуюсь IP.Board). Что я должен был сделать:

  1. Изменить URL-адрес og: изображения на моем сайте (общая конфигурация).
  2. Попробуйте этот метод с? Fbrefresh = 1154464gd56

Спасибо автору за эту тему!

РЕДАКТИРОВАТЬ: Что еще нужно помнить о требованиях к изображению. На данный момент (январь 2013 г.) это: - не менее 200 пикселей в обоих направлениях - максимальное соотношение 3: 1

Matt
источник
3

Одна вещь, чтобы добавить, URL чувствителен к регистру . Обратите внимание, что:

apps.facebook.com/ ПРИВЕТ

иначе в глазах линтера

apps.facebook.com/ привет

Обязательно используйте точный URL-адрес сайта, который был введен в настройках приложения для приложения. В противном случае linter вернет свойства, но не обновит кеш.

Джастин
источник
3

Простите, ребята, но правильный ответ:

Не существует надежного способа обновить открытый график og: image url с немедленным результатом. Он кэшируется до обновления fb (по сообщениям каждые 24 часа)

Вот вещи, о которых, как сообщалось, работали другие, но у меня был НУЛЬ успех с любым из них.

  • Выбирая "Получить новую информацию по царапинам"
  • Изменение фактического имени файла изображения и / или удаление оригинала
  • Добавление строки запроса к URL-адресу изображения путем добавления PHP TIMESTAMP или «что-нибудь»
  • Добавление строки запроса "... yoursite.com/?fbrefresh=anything" в URL-адрес выборки отладчика
  • Выбор графической ссылки API внизу страницы og dev
  • Выбор точного отображения того, что видит скребок - не запрашивает в реальном времени некэшированные данные скребка, он все равно показывает URL кэшированного изображения, даже если файл больше не существует

Проверка вашего кода - это всегда подходящее место для подтверждения того, что это не проблема кеша браузера или какой-либо службы кэширования. Если метаинформация в вашем коде обновлена, и вы перепробовали все вышеперечисленное (если не было выполнено другое предложение), правильный ответ - вы ничего не можете сделать, кроме как ждать .

Филипп Ингрэм
источник
1

Я обнаружил, что если ваше изображение 72dpi, это даст вам ошибку размера изображения. Используйте вместо этого 96dpi. Надеюсь это поможет.

Гордон
источник
1
  1. Перейти к http://developers.facebook.com/tools/debug

  2. Вставьте URL-адрес страницы и нажмите «Отладка». Если на вашем сайте используются псевдонимы URL, убедитесь, что вы используете тот же URL-адрес, который Facebook использует для страницы, которой вы делитесь (пример: в Drupal используйте путь узла / * вместо псевдонима, если страница используется по этому URL-адресу).

  3. Нажмите на ссылку «Просмотр предварительного просмотра» в ссылке «Просмотреть это в диалоговом окне».
Ханс Россель
источник
Лучшее решение! Спасибо
МэВ
1

Документы разработчика Facebook говорят, что свойство title имеет исключение:

После того, как 50 действий (лайки, публикации и комментарии) были связаны с объектом, вы не сможете обновить его заголовок

https://developers.facebook.com/docs/sharing/opengraph/using-objects#update

moogoo
источник
0

Был похожий опыт. Ссылка на сайт показывала 404 в предварительном просмотре, который генерировал Facebook. Оказывается, метаданные og: url были неправильными. Мы уже исправили это несколько дней назад, но все еще видели 404 на предварительном просмотре. Мы использовали инструмент по адресу https://developers.facebook.com/tools/debug/, и это принудительно обновило (кстати, не нужно было добавлять какие-либо параметры). В нашем случае Facebook не обновлял кэш после 24 часов, но инструмент помог заставить его.

jawss510
источник
0

Это кеш, часто обновляется, именно это и нужно делать кешу время от времени. Так что ожидание в конечном итоге сработает, но иногда вам нужно сделать это быстрее. Изменение имени файла работает.

Srneczek
источник
Так почему -1? Буквально никто не ответил на самое простое решение ИЗМЕНИТЬ ФИЛЬМ, и оно на самом деле работает не так, как проголосовали другие (+/- 5) ответы, которые не соответствуют или, по крайней мере, сделали, но устарели. Если вы не можете изменить имя файла по какой-либо причине, этот ответ вам не поможет.
Срнчек
0

У меня тоже была эта проблема. Скребок показывает правильную информацию, но URL-адрес общего ресурса все еще был заполнен старыми данными.

Я нашел способ использовать метод подачи вместо общего доступа, а затем заполнить данные вручную (что не предоставляется методом общего доступа)

Что-то вроде этого:

shareToFB = () => {
    window.FB.ui({
    method: 'feed',
    link: `signup.yourdomain.com/?referrer=${this.props.subscriber.sid}`,
    name: 'THIS WILL OVERRIDE OG:TITLE TAG',
    description: 'THIS WILL OVERRIDE OG:DESCRIPTION TAG',
    caption: 'THIS WILL OVERRIDE THE OG:URL TAG'
  });
};
Peege151
источник
0

Действительно легко решить. Проверено и работает. Вам просто нужно сгенерировать новый URL при обновлении ваших метатегов. Это так же просто, как добавить "& cacheBuster = 1" к вашему URL. Если вы измените метатеги, просто увеличьте "& cacheBuster = 2"

Оригинальный URL

www.example.com

URL при обновлении метатегов og:

www.example.com?cacheBuster=1

URL при повторном обновлении метатегов:

www.example.com?cacheBuster=2

Facebook будет относиться к каждому как к новому URL и получать свежие метаданные.

Будет
источник
0

Годы спустя, и это все еще распространенная проблема, но это не всегда кеш Facebook: это очень часто человеческая ошибка (позвольте мне уточнить)

ОГ: ТИП влияет на чистку изображения:

  1. https://ogp.me/#type_article не совпадает с https://ogp.me/#type_website

Помните, что og: type = website приведет к тому, что любые / подстраницы / этого URL станут "каноническими". Это означает, что у вас будут проблемы с обновлением изображений с помощью скребка, независимо от того, что вы делаете.

Считайте, что это «предположение и распространенная ошибка»

- <meta property="og:type" content="website" />=> https://www.example.org (родитель)
- <meta property="og:type" content="website" />=> https://www.example.org/sub-page/
- <meta property="og:type" content="website" />=> https://www.example.org/sub-page/child -2 /
- Ergo: /sub-page/и /child-2/унаследует og:imageот родителя

Это не «все сайты», 1 - это сайт, остальные - статьи.

Если вы сделаете это, Facebook сочтет все это каноническими и поместит в них ПЕРВОЕ изображение og :. (попробуйте, вы увидите) - если вы установите og: url в качестве корневого или родительского домена, вы сказали Facebook, что все они канонические. (есть веская причина для этого, но это не по теме)

Рассмотрим это решение (именно этого большинство людей «действительно хотят»)

- <meta property="og:type" content="article" />=> https://www.example.org/sub-page/
- <meta property="og:type" content="article" />=> https://www.example.org/sub-page/child-2/

Если вы сделаете это сейчас, Facebook даст вам гораздо меньше проблем с очисткой ваших НОВЫХ изображений.

В заключение, ДА могут работать сбои кеша, случайные переменные, изменение URL и предложения, но они будут выглядеть как «прерывистое вуду», если они og:typeне указаны правильно.

PS: помните, что CDN или серверный кеш будет служить скребку Facebook, даже если вы «думаете», что можете увидеть самую последнюю версию. (Я не буду тратить на это какое-либо время, кроме как на то, чтобы указать, что оно потратит колоссальное количество вашего времени, если не будет проверено дважды)

Кристиан Жагарскас
источник
0

Недавно у меня была другая, но похожая проблема с Facebook, и я обнаружил, что упомянутая страница скребка / отладки просто не читает ни одну страницу целиком. Мои мета-свойства для Open Graph были ниже в разделе head, и скребок постоянно сообщал мне, что спецификация изображения была неправильной, и независимо от него использовал бы кэшированную версию. Я переместил теги Open Graph дальше в коде, в самом верху страницы, и тогда все работало идеально, каждый раз.

PaulScott
источник