Facebook Open Graph没有清除缓存

时间:2011-04-25 08:23:08

标签: facebook opengraph

我在使用Open Graph的meta标签时遇到麻烦。好像Facebook正在缓存我的meta标签的旧值。属性og:titleog:url的旧值仍在使用,即使我已经更改了它们。

我在a page in my site上运行了Lint,然后出现了:

Facebook Open Graph lint screenshot

请注意,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?是否有人遇到过同样的问题?

23 个答案:

答案 0 :(得分:299)

  1. 转到 http://developers.facebook.com/tools/debug
  2. 输入fbrefresh=CAN_BE_ANYTHING
  3. 后面的网址

    <强>示例:

    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
    4. 昨晚我遇到了同样的问题,我从一些网站上得到了这个解决方案。

      Facebook保存您的缓存缩略图。即使您从服务器中删除了thumnail / image,它也不会刷新。但Facebook允许您使用fbrefresh

      进行刷新

      我希望这会有所帮助。

答案 1 :(得分:78)

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

这是 2014年11月

中应该使用的唯一两个选项

非开发人员

  1. 使用FB调试器:https://developers.facebook.com/tools/debug/og/object
  2. 粘贴要重新缓存的网址。 (确保使用og:url标签中包含的相同网址)
  3. 再次单击“获取废料信息”按钮
  4. For Developers

    1. 以编程方式对此网址进行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的份额数。
    4. 关于更新图像的其他信息

      • 如果og:image URL保持不变但图像实际已经更改,即使执行上述操作,Facebook刮刀也不会对其进行更新或修复。 (即使在图片网址末尾传递?last_update = [TIMESTAMP]也不适合我)。
      • 对我来说唯一有效的解决方法是为图像指定一个新名称。

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

      • 当您调用调试器取消对您网页的og:标记进行更改时,该网址之前的所有Facebook共享仍将显示旧图像/视频。由于安全原因,没有办法更新所有以前的帖子,这是出于设计的方式。否则,某人将能够假装用户分享他/她实际上没有的东西。

答案 2 :(得分: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”字段和其他有用信息。

答案 3 :(得分:11)

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

答案 4 :(得分:6)

基本上,答案是耐心;)

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

enter image description here

答案 5 :(得分:6)

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

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

编辑* 我花了几个小时才回到使用1200 x 630并且神奇地工作,这很神奇。

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

答案 6 :(得分:4)

我们刚刚碰到了这个,事实证明,我们并没有找到正确的网址,因为真正的网址有一个查询字符串(对于机器人来说,duh,不同的页面)。

http://example.com/

!==

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

linter 重新缓存您的页面,您无需等待。

答案 7 :(得分:4)

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

答案 8 :(得分:4)

Ooook,最后它有所帮助(我使用IP.Board)。我必须做的是:

  1. 在我的网站上更改og:image的网址(常规配置)。
  2. 使用?fbrefresh = 1154464gd56
  3. 尝试此方法

    感谢这个帖子的作者!

    编辑:您还需要记住图像要求。现在(2013年1月)它是:   - 两个方向至少200 px   - 最大比例3:1

答案 9 :(得分:4)

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

答案 10 :(得分:3)

要添加一件事,网址区分大小写。请注意:

  

apps.facebook.com/的 HELLO

在linter的眼睛中是不同的

  

apps.facebook.com/ 你好

请务必使用在应用的开发者设置中输入的确切网站网址。 linter将以其他方式返回属性,但不会刷新缓存。

答案 11 :(得分:3)

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

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

以下是其他人报告过的事情,但我在其中任何一个都取得了成功。

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

检查您的代码始终是确定它不是浏览器缓存或某些缓存服务问题的方法。如果您的代码中的元信息是最新的,并且您已经尝试了以上所有内容(除非另一个建议实现),正确的答案是您只能等待。< / p>

答案 12 :(得分:1)

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

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

  3. 点击&#34;分享预览&#34;部分在&#34;在共享对话框中看到这个&#34;链路

答案 13 :(得分:1)

Facebook开发者文档称title属性有例外:

  

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

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

答案 14 :(得分:1)

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

答案 15 :(得分:0)

I was having this issue too. The scraper shows the right information, but the share url was still populated with old data.

The way I got around this was to use the feed method, instead of share, and then populate the data manually (which isn't exposed with the share method)

Something like this:

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'
  });
};

答案 16 :(得分:0)

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

答案 17 :(得分:0)

有类似的经历。网站链接在facebook生成的预览中显示404。结果显示og:url元数据错误。几天前我们已经修好了,但预览中仍然看到了404。我们使用https://developers.facebook.com/tools/debug/处的工具强制刷新(顺便说一下,不必添加任何参数) 在我们的案例中,Facebook在24小时后没有刷新缓存,但该工具帮助强制它。

答案 18 :(得分:0)

对我来说,所有解决方案都不起作用。我发现如果你使用 Wordpress和Yoast SEO 那么你必须刷新这两个标签:

<meta property="article:modified_time" content="2017-09-29T00:37:33+02:00" />
<meta property="og:updated_time" content="2017-09-29T00:37:33+02:00" />

要刷新值,您必须向文章提交任何更改。如果你不改变这个日期,那么facebook缓存不会刷新。

您还可以通过在functions.php中添加过滤器来停用此附加标记:

add_filter( 'wpseo_og_article_published_time', '__return_false' );
add_filter( 'wpseo_og_article_modified_time', '__return_false' );
add_filter( 'wpseo_og_og_updated_time', '__return_false' );

答案 19 :(得分:0)

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

原始URL

www.example.com

更新og元标记的网址:

www.example.com?cacheBuster=1

重新更新og元标记的网址:

www.example.com?cacheBuster=2

Facebook将把每个人都当作一个新的URL并获取新的元数据。

答案 20 :(得分:0)

几年后,这仍然是一个普遍的问题,但它并不总是在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的抓取工具。 (除了指出这一点,如果不仔细检查,这将浪费您大量的时间。)

答案 21 :(得分:0)

我最近在Facebook上遇到了一个不同但类似的问题,发现提到的刮板/调试页面似乎根本无法读取任何页面。我在Open Graph的元属性位于标题的下端,并且抓取工具会不断通知我图像规范不正确,并且无论如何都将使用缓存的版本。我将Open Graph标签在代码中移到页面顶部附近,然后每次都运行良好。

答案 22 :(得分:0)

我在fb和twitter上缓存旧的元数据时遇到了同样的问题,这让我不知所措,因为我继续编辑代码但没有任何变化。我终于发现他们缓存了我的第一个请求。在网址中添加查询字符串只能用于twitter,但不能用于fb(对我而言)。