Facebook Open Graph 没有清除缓存

我的开放图表元标签出了点问题。Facebook 似乎在缓存我的 meta 标签的旧值。属性 og:titleog:url的旧值仍在使用,尽管我已经更改了它们。

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

Facebook Open Graph lint screenshot

请注意,og:titleog:url有两个值,最后一个占优势。但是,我在这个站点使用的 最后两个条目是 OLD 条目。我现在正在使用这些 meta 标签(您可以验证是否查看了 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? 是否有人遇到同样的问题?

205821 次浏览

基本上,答案是耐心;)

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

enter image description here

我们刚刚遇到了这个问题,结果是,我们没有链接正确的 url,因为真正的 url 有一个查询字符串(就 bot 而言,不同的页面)。

http://example.com/

!==

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

内衬 威尔重新缓存您的页面,您不必等待。

  1. 转到 译自: 美国《 http://developers.facebook.com/tools/debug 》杂志网站(http://developers.facebook.com/tools/debug)
  2. 输入以 fbrefresh=CAN_BE_ANYTHING跟随的 URL

例子:

  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刷新

希望这个能帮上忙。

是的,facebook 每24小时自动清除一次缓存: 实际上 facebook 每24小时清除一次页面并更新一次缓存。

需要补充的一点是,URL 是 大小写敏感。请注意:

Apps.facebook.com/abc0

在衬里的眼睛里是不一样的

Apps.facebook.com/abc0

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

即使传递了 fbreFresh 变量,OG 缩略图似乎也不会刷新。 要在不等待自动清除的情况下更新这个属性,您需要更改缩略图相关元标记值的文件名并刷新。

Ooook,最终它起作用了(我使用 IP.Board)。我必须做的是:

  1. 更改网址 og: 图片在我的网站(一般配置)。
  2. 使用? fbreFresh = 1154464gd56尝试此方法

感谢作者的这个帖子!

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

有过类似的经历。网站链接显示了一个404在预览,脸谱网生成。原来 og: url 元数据是错的。我们几天前就已经修好了,但在预览版中还是看到了404。我们在 https://developers.facebook.com/tools/debug/使用了这个工具,它强制执行刷新(顺便说一下,不需要附加任何参数) 在我们的案例中,Facebook 没有在24小时后刷新缓存,但是这个工具帮助强制刷新了缓存。

它是一个缓存,ofc 会刷新,这就是缓存每隔一段时间要做的事情。所以等待最终会起作用,但有时你需要做得更快。更改文件名是可行的。

我已经发现,如果你的图像是72dpi 它会给你的图像尺寸错误。使用96dpi 代替。希望这个能帮上忙。

如果您有许多页面,并且不想手动刷新它们,那么可以自动进行。

假设你有一个带照片的用户资料页面:

$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”——您将在其中找到“ update _ time”字段和其他有用的信息。

  1. 转到 http://developers.facebook.com/tools/debug

  2. 粘贴网页的网址并单击调试。如果你的网站使用网址别名,请确保你使用的网址与 Facebook 相同 正在用于您正在共享的页面(例如: 在 Drupal 中使用 如果页是通过 node/* 路径共享的,则使用 node/* 路径代替别名

  3. 点击“共享预览”部分的“在共享对话框中查看”链接

我有同样的问题使用 og:image,几次尝试重命名文件或清除 FB 缓存无论是通过 facebook 调试器或测试通过一个实际的帐户。

新的 facebook 指南规定图片大小应该是1200 x 630或者有这样的高宽比,这似乎是错误的,唯一对我有效的就是使用 正方形尺寸的图片。

编辑 * 几个小时后,我回到使用1200x630,它神奇地工作,它是神奇的。

我还将文件重命名为 f * ^ * kfacebook.jpg,不知道是否有帮助,但感觉不错。

  1. 访问 FB 页面 https://developers.facebook.com/tools/debug/og/object/
  2. 输入你的域名。
  3. 点击“获取新的刮痕信息”按钮
  4. 成交

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

2014年11月开始,只有两种选择可以使用:

对于非开发人员

  1. 使用 FB 调试器: https://developers.facebook.com/tools/debug/og/object
  2. 粘贴要重新缓存的 url (确保使用 og: url 标记中包含的相同 url)
  3. 再次单击抓取信息按钮

开发商须知

  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 的抓取器甚至不会更新或重新获取它。(甚至传递一个?Last _ update = [ TIMESTAMP ]在图像 URL 的末尾不起作用)。
  • 对我来说唯一有效的解决方法是为映像分配一个新名称。

关于先前发布的图片或视频更新的说明:

  • 当您调用调试器来取消对您的 og: 标记页面的更改时,该 URL 的所有以前的 Facebook 共享仍将显示旧的图片/视频。没有办法更新所有以前的职位,它的这种方式设计的安全原因。否则,就会有人假装用户分享了他/她实际上没有分享的东西。

我也有这个问题。Scraper 显示了正确的信息,但是共享 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'
});
};

Facebook 开发者文档说所有权属性有例外:

一旦50个动作(喜欢,分享和评论)被关联 对象,则无法更新其标题

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

对不起,伙计们,正确答案是:

没有傻瓜般的方法来更新打开的图形 og: 图像网址与立即的结果。它被缓存直到 fb 更新(据报道每24小时)

这里有些事情已经被别人报告成功了,但是我从来没有成功过。

  • 选择“获取新的刮信息”
  • 更改实际的图像文件名和/或删除原始文件
  • 通过添加一个 PHPTIMESTAMP 或? 任何东西将查询字符串添加到图像 URL
  • 将“ ... yoursite.com/?fbrefresh=anything”查询字符串添加到调试器获取 url
  • 选择 og dev 页面底部的 graph API 链接
  • 如果选择查看 scraper 看到的内容——看起来并没有要求实时取消缓存的 scraper 数据,那么即使文件不再存在,它仍然会显示缓存的图像 URL

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

真的很容易解决。测试和工作。只需在更新 meta 标记时生成一个新的 url。这很简单,只需在 URL 中添加一个“ & cache Buster = 1”即可。如果更改了 meta 标记,只需增加“ & cache Buster = 2”即可

原始网址

www.example.com

更新 og 元标记时的 URL:

www.example.com?cacheBuster=1

Og meta 标签再次更新时的 URL:

www.example.com?cacheBuster=2

Facebook 会像对待一个新的网址一样对待它们,并获得新的元数据。

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

格: 类型影响你的图像刮痕:

  1. Https://ogp.me/#type_article https://ogp.me/#type_website

请注意,og: type = site 将导致该 URL 的任何/子页面/变成“ canonical”。这意味着无论你做什么,你都很难使用刮刀来更新你的图像。

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

- <meta property="og:type" content="website" /> = > https://www.example.org(家长)
--翻译: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳 https://www.example.org/sub-page/校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校
--rel = “ nofollow noReferrer”> https://www.example.org/sub-page/child-2/
- 因此: /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 将给你的问题远远少于刮你的新图像。

最后,是缓存终结器,随机变量,更改网址和建议在这里可以工作,但他们将看起来像 “间歇性巫术”如果没有正确地指定 og:type

注: 请记住,CDN 或服务器端缓存将服务于 Facebook 的 scraper,即使你“认为”你可以看到最新的版本。(我不会在这上面花费任何时间,除了指出如果不仔细检查的话,它将浪费你大量的时间。)

我最近在 Facebook 上遇到了一个不同但类似的问题,我发现上面提到的 scraper/debug 页面似乎并没有完整地阅读任何页面。我的 Open Graph 的元属性位于头部的更下面的部分,而且 scraper 会不断地告诉我图像说明书不正确,并且会使用缓存版本。我把 Open Graph 标签移动到代码的更上面,接近页面的最顶端,然后每次都能完美地工作。

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