176

我在使用 Open Graph 的元标记时遇到问题。似乎 Facebook 正在缓存我的元标记的旧值。属性的旧值og:title并且og:url仍在使用,即使我已经更改了它们。

我在我网站的一个页面上运行了 Lint ,结果出现了:

Facebook Open Graph lint 截图

请注意, 和 有两个值og:titleog: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:titleog:url?有没有人遇到同样的问题?

4

22 回答 22

309
  1. 转到http://developers.facebook.com/tools/debug
  2. 输入以下网址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 会保存您的缓存缩略图。即使您从服务器中删除缩略图/图像,它也不会刷新。但是 Facebook 允许您通过使用来刷新fbrefresh

我希望这有帮助。

于 2011-10-08T06:50:37.857 回答
84

投票最多的问题已经过时了:

这些是截至2014 年 11 月应该使用的仅有的 2 个选项:

对于非开发人员

  1. 使用 FB 调试器:https ://developers.facebook.com/tools/debug/og/object
  2. 粘贴要重新缓存的 url。(确保使用 og:url 标签中包含的相同 url)
  3. 再次点击 Fetch Scrape information 按钮

对于开发者

  1. 以编程方式对此 URL 进行 GET 调用: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 的共享数量。

关于更新图像的附加信息

  • 如果 og:image URL 保持不变,但图像实际上已更改,则即使执行上述操作,Facebook 抓取工具也不会更新或重新缓存它。(即使在图像 url 的末尾传递一个 ?last_update=[TIMESTAMP] 对我来说也不起作用)。
  • 对我来说唯一有效的解决方法是为图像分配一个新名称。

有关先前发布的帖子的图像或视频更新的注意事项:

  • 当您调用调试器以废弃您页面的 og:tags 上的更改时,该 URL 的所有先前 Facebook 共享仍将显示旧图像/视频。没有办法更新所有以前的帖子,出于安全原因,这种方式是设计的。否则,有人可以假装用户分享了他/她实际上没有分享的内容。
于 2014-11-24T08:24:43.970 回答
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 解决方案,请查看 console.log 中的“response” - 您会在其中找到“updated_time”字段和其他有用信息。

于 2014-01-30T21:47:06.033 回答
12

即使传递 fbrefresh 变量,OG 缩略图似乎也不会刷新。要在不等待自动清除的情况下更新此内容,您需要更改缩略图关联元标记值的文件名并刷新。

于 2012-12-12T16:13:32.137 回答
7

我在使用时遇到了同样的问题og:image,多次尝试重命名文件或清除 FB 缓存都无法通过 facebook 调试器或通过实际帐户进行测试。

新的 facebook 指南规定图像尺寸应为 1200 x 630 或具有该纵横比,这似乎是错误的,唯一对我有用的是使用方形尺寸的图像。

编辑* 几个小时后,我回去使用 1200 x 630,它神奇地起作用了,太神奇了。

我还将文件重命名为 f*^*kfacebook.jpg,不确定它是否有帮助,但感觉很好。

于 2014-07-10T19:25:33.687 回答
6

基本上,答案是耐心;)

我今天早上检查了 Linter,og:title 和 og:url 显示正确,没有多余的值。我猜 FaceBook 会在某个特定时间间隔自动清除其缓存。我只需要等待。

在此处输入图像描述

于 2011-04-26T00:44:04.677 回答
4

是的,facebook 每 24 小时自动清除一次缓存:实际上 facebook 每 24 小时抓取一次页面并更新缓存https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo

于 2012-01-19T04:25:40.623 回答
4

Ooook,终于有帮助了(我使用 IP.Board)。我必须做的是:

  1. 在我的网站上更改 og:image 的 url(常规配置)。
  2. 用 ?fbrefresh=1154464gd56 试试这个方法

感谢作者提供这个线程!

编辑:关于图像要求,您还需要记住什么。目前(2013 年 1 月)是: - 两个方向至少 200 像素 - 最大比例 3:1

于 2013-01-18T19:58:14.440 回答
4
  1. 访问 FB 页面https://developers.facebook.com/tools/debug/og/object/
  2. 输入您的域。
  3. 点击“获取新的抓取信息”按钮
  4. 完毕
于 2014-11-11T18:06:51.517 回答
4

我很抱歉,但正确的答案是:

没有万无一失的方法可以立即更新打开的图形 og:image url。它被缓存直到 fb 更新(据报道每 24 小时)

以下是其他人报告的工作,但我在其中任何一个方面都取得了零成功。

  • 选择“获取新的抓取信息”
  • 更改实际图像文件名和/或删除原始图像文件名
  • 通过附加 PHP TIMESTAMP 或 ?anything 将查询字符串添加到图像 url
  • 将“...yoursite.com/?fbrefresh=anything”查询字符串添加到调试器获取 url
  • 选择 og dev 页面底部的图形 API 链接
  • 选择确切地查看刮板所看到的 - 似乎不会请求实时未缓存的刮板数据,即使文件不再存在,它仍会显示缓存的图像 url

检查您的代码始终是确认浏览器缓存或某些缓存服务没有问题的方法。如果您的代码中的元信息是最新的,并且您已经尝试了上述所有方法(除非另一个建议得到实现),那么正确的答案是您只能等待

于 2017-01-12T17:16:20.593 回答
3

我们只是遇到了这个问题,事实证明,我们没有检查正确的 url,因为真正的 url 有一个查询字符串(呃,就机器人而言,不同的页面)。

http://example.com/

!==

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

linter重新缓存您的页面,您不必等待。

于 2011-05-09T21:43:29.577 回答
3

要补充一点,网址区分大小写。注意:

apps.facebook.com/你好

那么在 linter 的眼中是不同的

apps.facebook.com/你好

请务必使用在应用程序的开发人员设置中输入的确切网站 URL。否则,linter 将返回属性,但不会刷新缓存。

于 2012-02-02T16:44:18.483 回答
1

我发现如果你的图像是 72dpi,它会给你图像尺寸错误。请改用 96dpi。希望这可以帮助。

于 2013-11-15T09:34:25.323 回答
1
  1. 转到http://developers.facebook.com/tools/debug

  2. 粘贴页面的url,然后点击调试。如果您的网站使用 url 别名,请确保您使用的 url 与 Facebook 用于您共享的页面的 url 相同(例如:在 Drupal 中,如果页面通过该 url 共享,则使用 node/* 路径而不是别名)。

  3. 单击“在共享对话框中查看”链接上的“共享预览”部分
于 2014-06-28T18:20:23.513 回答
1

Facebook 开发者文档说 title 属性有异常:

一旦 50 次操作(点赞、分享和评论)与对象相关联,您将无法更新其标题

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

于 2016-10-12T07:02:56.067 回答
0

有过类似的经历。网站链接在 facebook 生成的预览中显示 404。原来 og:url 元数据是错误的。几天前我们已经修复了它,但仍然在预览中看到 404。我们在https://developers.facebook.com/tools/debug/使用了该工具,并且强制刷新(不必附加任何参数)在我们的例子中,Facebook 在 24 之后没有刷新缓存小时,但该工具帮助强制它。

于 2013-06-03T02:58:22.110 回答
0

它是一个缓存,它会刷新,这就是缓存偶尔要做的事情。所以等待最终会起作用,但有时你需要更快地做到这一点。更改文件名有效。

于 2013-09-27T20:27:13.610 回答
0

我也有这个问题。刮板显示了正确的信息,但共享 url 仍然填充了旧数据。

我解决这个问题的方法是使用 feed 方法,而不是 share,然后手动填充数据(不使用 share 方法公开)

像这样的东西:

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'
  });
};
于 2016-04-04T17:22:47.007 回答
0

真的很容易解决。测试和工作。您只需要在更新元标记时生成一个新的 url。就像在您的网址中添加“&cacheBuster=1”一样简单。如果您更改元标记,只需增加“&cacheBuster=2”

原始网址

www.example.com

更新 og 元标记时的 URL:

www.example.com?cacheBuster=1

再次更新 og 元标记时的 URL:

www.example.com?cacheBuster=2

Facebook 会将每一个都视为一个新的 url 并获取新的元数据。

于 2019-08-10T17:55:16.820 回答
0

多年后,这仍然是一个常见问题,但它并不总是 facebook 的缓存:这通常是人为错误(请允许我详细说明)

OG:TYPE 影响您的图像抓取:

  1. https://ogp.me/#type_article 与 https://ogp.me/#type_website 一样

请注意, og:type=website 将导致该网址的任何 /sub-pages/ 变为“规范”。这意味着无论您做什么,都无法使用刮板更新图像。

考虑一下这个“假设和常见错误”

- <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 会认为所有这些都是规范的,它会将 FIRST og:image 放入所有这些中。(试试看,你会看到) - 如果你将 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 的抓取工具。(除了指出如果不仔细检查它会浪费你大量的时间,我不会花任何时间在这上面。)

于 2019-09-06T19:39:32.230 回答
0

我最近在 Facebook 遇到了一个不同但类似的问题,发现提到的爬虫/调试页面似乎根本没有完整阅读任何页面。我的 Open Graph 元属性在 head 部分更靠后,刮板会不断通知我图像规范不正确,并且无论如何都会使用缓存版本。我在代码中将 Open Graph 标记进一步向上移动,靠近页面顶部,然后每次都运行良好。

于 2020-05-31T02:09:52.560 回答
0

我在 fb 和 twitter 缓存旧元数据时遇到了同样的问题,当我继续编辑代码但没有改变时,这让我陷入了困境。我终于发现他们缓存了我的第一个请求。向 url 添加查询字符串适用于 twitter,但不适用于 fb(对我来说)。

于 2020-11-28T04:07:28.473 回答