假设您是否通过开放图形协议的元标记为您的网页设置了facebook图像,如下所示:
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
如果您想用另一张同名rock.jpg
的图片替换/更新图片,那么当您共享页面时,如何让Facebook使用新图像相应地更新图片?强制Facebook使用此链接http://developers.facebook.com/tools/debug获取您网页的数据不会更新图片。
答案 0 :(得分:57)
这是我在这个问题上找到的最一致的答案:https://stackoverflow.com/a/21468084/339698
如果你懒得去那个链接,你可以POST
使用你想要清除的网址的ajax请求:
$.post(
'https://graph.facebook.com',
{
id: 'http://www.site.com/my/share/url/',
scrape: true
},
function(response){
console.log(response);
}
);
答案 1 :(得分:40)
Facebook将您的图像存储在其服务器上的自己的图像中,然后将其缓存24小时。缓存延迟可能在将来发生变化,因此要检查它只是打开Facebook从您的图像创建的图像并检查其http头中的“max-age”值。因此,如果您更改图像,即使您使用此链接http://developers.facebook.com/tools/debug强制数据获取,Facebook也不会在24小时之前更新其版本。
要解决此问题,如果您需要立即查看更改的效果,则应重命名图像。因此,如果旧版本rock.jpg
将其命名为rock2.jpg
,请使用此链接http://developers.facebook.com/tools/debug让Facebook根据您更新的图片创建新图片。这将立即在facebook分享中更新您网页的脸书图片。
答案 2 :(得分:2)
发表此文章的几年后,这仍然是一个问题,但它不是Facebook的缓存:它经常是人为错误(请允许我详细说明)
OG:TYPE会影响您的图像抓取:
请注意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的抓取工具。 (除了指出这一点,如果不仔细检查,这将浪费您大量的时间。)
答案 3 :(得分:1)
如果您使用任何缓存插件,请确保清除所有缓存。另外,请确保您使用的图像具有推荐的脸谱尺寸:1200(宽)x 630(高)或600 x 315.