Facebook喜欢 - 显示缓存版本og:图像,刷新或重新索引的方式?

时间:2011-09-27 16:23:21

标签: facebook facebook-like facebook-opengraph

遇到类似Facebook的问题和缓存的og:image。

长话短说: Facebook已经缓存了我们喜欢的图像的旧版本。元内容网址无法更改。有什么我可以做的来刷新它吗?

长篇故事: 我正在处理的网站有一个og:meta图像,Facebook在页面被喜欢时使用。此元标记在整个网站的所有网页上使用相同的图片网址。该图像只是该网站的品牌形象。

问题是该网站最近更新了他们的品牌,我们无法让Facebook像图像更新。当用户点击类似链接时,生成的Facebook帖子仍会显示旧的品牌形象。

元标记类似于:

<meta property="og:image" content="http://[domain].com/images/bookmark/apple-touch-icon.png"/>

每当有人进入Facebook时,图片的网址都会更改为缓存的Facebook网址,类似于:

http://external.ak.fbcdn.net/safe_image.php?d=AQDajxm-qgVNdfEL&w=90&h=90&url=http%3A%2F%2F[domain].com%2Fimages%2Fbookmark%2Fapple-touch-icon.png

此网址显示网站品牌的旧版本。它已经过了一个多星期,还没有更新。

有没有办法强迫Facebook重新索引图像/清除它的缓存?或者,Facebook会定期自动执行此操作吗?我找不到任何相关信息。

我知道更改元标记中的网址可以解决问题,但元标记是由跨多个网站使用的代码生成的,无法更改。我也尝试过其他人建议的delinter工具。没运气。

6 个答案:

答案 0 :(得分:75)

将您的网址插入其linter,并重新加载其缓存

答案 1 :(得分:19)

您可以使用Facebook的对象调试器,它允许您输入页面URL,然后在下一页上,您可以在请求“获取新的抓取信息”中重新提交它。这将清除Facebook对给定URL的缓存 - 并不是说​​它可能需要一些时间来传播所有缓存节点。

Facebook的对象调试器可以在这里找到: https://developers.facebook.com/tools/debug/

我们最近发现,Facebook正在使用查询字符串缓存URL,而不是查询字符串被忽略,这会使我们纯粹根据查询字符串提供的一些动态图像混乱。

事实证明,您可以指定上次修改的时间戳(采用unix时间戳格式),以帮助确保FB抓取您的网站时始终获得正确的图像。

这可以通过包含以下OG元标记来完成:

对于动态网站,您希望生成内容值 - 使用PHP可以按如下方式插入当前的unix时间戳:

<meta property="og:updated_time" content="<?=time()?>" />

希望这有帮助!

答案 2 :(得分:8)

我认为可能的解决方案......如果你在URL的末尾添加一个随机字符串怎么办?

www.server.com/something.php?v=<?php echo rand() ?> 要么 www.server.com/something.jpg?v=<?php echo rand() ?>

我猜facebook取决于网址...随机改变它......可能有所帮助。

答案 3 :(得分:1)

发布此帖子7年后,这仍然是一个问题,但不是Facebook的缓存:这是人为错误(请允许我详细说明)

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

  1. https://ogp.me/#type_article https://ogp.me/#type_website
  2. 不同

请注意og:type = website将导致该URL的任何/ 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的抓取工具。 (除了指出这一点,如果不仔细检查,这将浪费您大量的时间。)

答案 4 :(得分:0)

  1. 在更新图像时更改og:image的URL

示例

<meta property="og:image"         content="https://abc.lk/img/share-english.jpg" />

<meta property="og:image"         content="https://abc.lk/img/share-english-1.jpg" />
  1. 转到https://developers.facebook.com/tools/debug/sharing

  2. 添加网址-单击调试

  3. 检查时间,然后再次单击“抓取”

答案 5 :(得分:-1)

<meta property="og:image" content="https://example.com/image.jpg?v=<?= time() ?>" />

这是我的解决方案,使用?v = UNIX_TIMESTAMP 但仍然需要再次获取页面。

https://developers.facebook.com/tools/debug/sharing