如何更新facebook开放图形图像

如何更新facebook开放图形图像,facebook,facebook-opengraph,Facebook,Facebook Opengraph,假设您已通过open graph协议的meta标记为您的网页设置facebook图像,如下所示: 如果你想用另一张同名的图片替换/更新你的图片rock.jpg,你如何让facebook在你共享页面时用新图片相应地更新你的图片?强制facebook使用此链接获取您页面的数据不会更新图像。facebook将您的图像存储到其服务器上自己的图像中,然后将其缓存24小时。缓存延迟将来可能会改变,所以要检查它,只需打开facebook根据您的图像创建的图像,并在http头中检查其“max age”值。因此

假设您已通过open graph协议的meta标记为您的网页设置facebook图像,如下所示:


如果你想用另一张同名的图片替换/更新你的图片
rock.jpg
,你如何让facebook在你共享页面时用新图片相应地更新你的图片?强制facebook使用此链接获取您页面的数据不会更新图像。

facebook将您的图像存储到其服务器上自己的图像中,然后将其缓存24小时。缓存延迟将来可能会改变,所以要检查它,只需打开facebook根据您的图像创建的图像,并在http头中检查其“max age”值。因此,如果您更改图像,facebook将在24小时前更新其版本,即使您使用此链接强制获取数据


要解决这个问题,如果您需要立即查看更改的效果,您应该重命名您的图像。因此,如果旧版本是
rock.jpg
将其命名为
rock2.jpg
,则使用此链接让facebook根据更新后的图像创建新图像。这将立即更新您的网页在facebook共享中的facebook图像。

这是我找到的关于这个问题的最一致的答案:

如果您懒得转到该链接,您可以
发布一个ajax请求,其中包含您试图清除的url:

$.post(
    'https://graph.facebook.com',
    {
        id: 'http://www.site.com/my/share/url/',
        scrape: true
    },
    function(response){
        console.log(response);
    }
);

如果您正在使用任何缓存插件,请确保清除所有缓存。还要确保您使用的图像具有facebook推荐的大小:1200(宽)x 630(高)或600 x 315。

这篇文章发表后几年,这仍然是一个问题,但这不是facebook的缓存:这经常是人为错误(请允许我详细说明)

OG:TYPE effects您的图像刮取:

  • 不一样
  • 请注意,og:type=website将导致该url的任何/子页/成为“规范的”。这意味着无论你做什么,你都很难用刮板更新你的图像

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

    -
    =>(父项)
    -
    =>
    -
    =>
    -因此:
    /sub-page/
    /child-2/
    将继承父对象的
    og:image

    这些不是“所有的网站”,1是一个网站,其他的是文章

    如果你这样做了,Facebook会认为所有这些都是规范的,它会在所有这些中添加第一个og:image。(试试看,你会发现)-如果你将og:url设置为你的根域或父域,你已经告诉facebook它们都是规范的。(这有很好的理由,但它离题了)

    考虑这个解决方案(这是大多数人“真正想要的”)

    -
    =>
    -
    =>

    如果你现在这样做了,Facebook将大大减少你抓取新图片的问题

    最后,是的,这里的缓存清除器、随机变量、更改URL和建议都可以工作,但是如果没有正确指定
    og:type
    ,它们看起来就像“间歇性伏都教”


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

    这非常有效。这应该是最好的答案。我同意@草莓,如果您知道如何在控制台中使用javascript/jQuery,这个解决方案是立即生效的最佳解决方案。立即刷新他们的og:image缓存,每次都能正常工作。我会用这个做一个书签,谢谢:)工作很愉快。非常感谢。如果您可以访问Facebook开发者工具,您也可以通过图形API浏览器或通过图形API浏览器,将
    ?scrape=true&id=URL\u to\u scrape
    放在POST字段中,以防有人想要使用版本化的图形URL,例如
    https://graph.facebook.com/v2.6
    需要一个
    访问令牌
    。这可以是Facebook应用程序访问令牌,它是
    {App_ID}{App_SECRET}