Facebook调试器需要多次刷新才能返回正确的og:图像值

时间:2015-11-11 23:53:07

标签: angularjs facebook facebook-graph-api

我一直在使用Facebook调试器来一致地解决我们在AngularJS网站上使用的og:image标签的问题。在获得正确的元数据之前,我的内容编辑器必须多次清除FB中的缓存。这是我们的设置:

  1. 我们正在使用PhantomJS,支持磁盘缓存,让所有UA~Facebook正确地将FB请求传递给我们的静态HTML标记。我们已经验证(通过curl 'http://localhost:9000/path/to/my/page' | grep og:image)在尝试与FB Open Graph共享或呈现新对象之前存在正确的og:image标记

  2. 在FB Debugger拉出正确的图像之前,我们必须始终“获取新的抓取信息”3到4次。调试器以下列方式返回擦除:

  3. - 首次获取:Angular绑定命中之前的默认og标记。

    很难说为什么会发生这种情况,因为我们之前没有尝试过分享页面。我们已经将页面传递给了PhantomJS进程并在返回中看到了正确的og(为了在共享或前往FB之前缓存返回)。

    - 第二次获取:正确的og标签填入了所需的图像,但带有OG图像警告

      

    og:图片未定义,无法下载或不够大。请使用og:image metatag定义所选图像,并使用至少200x200像素且可从Facebook访问的图像。将使用图像'XXXXXXX'。有关更多问题排查提示,请参阅http://developers.facebook.com/docs/sharing/webmasters/crawler

    所需图像为600x337 png(无透明度),因此尺寸不是问题(最终会显示)。相反使用的后备图像是刮擦#1之前的默认og:image。

    - 第三次获取:

    OG图像警告消失,所有其他提取返回正确的元数据。分享工作,我们可以继续前进。

    因此,虽然这有效,但它有点沉重。很显然,我们遇到FB的问题,看到我们的默认元,缓存该元,并需要我们清理出来。在我们在PhantomJS进程中实现任何缓存升温之前,以及可能对FB API进行POST以获得正确的scrape标记到Open Graph之前,有人可以回答为什么额外的第二次刷新会产生og:image警告然后它消失了吗?如果正确的og:图像存在并且大小正确,为什么会出错?

    We looked at this answer,评论说在使用调试器时清除浏览器缓存。我们认为评论使用多个浏览器但无济于事。我们尝试使用Postman来测试这个理论的无缓存POST,因为它可能是我们缓存温暖的方式,但仍然需要额外的刷新。

0 个答案:

没有答案