如何清除Facebook Sharer缓存?


115

我们使用了链接:

http://www.facebook.com/sharer.php?u=[shared URL]

...共享特定页面。但是,Facebook Sharer使用图像和标题的缓存版本。有没有一种方法可以快速清除Facebook缓存,或者我们要等多久才能更新数据?

我放在<link rel='image_src' href='[preview image]' />标签之间。

Answers:


237

我找到了解决问题的办法。您可以转到此站点:

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

...然后输入您要共享的页面的URL,然后单击“调试”。它将自动提取您的元标记上的所有信息,并清除缓存。


1
有没有办法获得相同的东西,但是会自动使用javascript?我的网站上的页面经常会更改其名称。我不想等待Facebook重置缓存的24小时,也不能每次都使用Facebook Lint。我尝试过使用对Facebook Lint的ajax请求(使用developers.facebook.com/tools/debug/og/object?q= ...作为url),但响应是q值(作为参数传递给上述url)是Access-Control-Allow-Origin不允许。
Giovanni Bitliner'3

3
如果仍然无法刷新它,请尝试在URL末尾添加一个随机查询字符串参数。
JD Smith

2
只需单击Fetch new scrape information按钮
IvanRF '16

2
我已经获取了新的抓取信息...它看到的是正确的数据,但共享者却显示了旧数据。我们还有什么可以做的吗?
Peege151 '16

1
如果共享中显示的图像有问题,请尝试更改图像URI。
totymedli

10

使用api 是否有API可以迫使Facebook重新抓取页面?

$furl = 'https://graph.facebook.com';

$ch = curl_init();

curl_setopt( $ch, CURLOPT_URL, $furl );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POST, true );
$params = array(
    'id' => '<update_url>',
    'scrape' => true );
$data = http_build_query( $params );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );

curl_exec( $ch );
$httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );

10

Facebook将每个URL视为唯一,并根据该URL缓存页面,因此,如果要共享最新的URL,最简单的解决方案是添加一个要共享URL的查询字符串。简单来说,只需在网址末尾添加?v = 1。可以使用任何数字代替1。

帽子提示:Umair Jabbar


我认为这会影响您页面收到的链接的数量,因为每个版本都会对它们进行计数,对吗?
安德烈·拉斯洛(AndréLaszlo)

3

我认为这两个链接对与您的问题相关的内容进行了广泛的讨论。fb:ref通过致电清除现金

fbml.refreshRefUrl

像这样

<tt> fbml.refreshRefUrl(“ http://www.mysite.com/someurl.php”)

您可以从这里fb:ref研究相关的东西。我希望它对你有用


3

执行此操作的页面位于https://developers.facebook.com/tools/debug/,并且由于其他一些答案而略有变化。

将您的URL粘贴在那里,然后点击“ 调试 ”。然后点击URL文本字段下的“ 获取新的抓取信息 ”按钮,您便已准备就绪。它将从页面中提取新的meta标签,但它们仍将缓存,因此请记住,每当更改它们时都需要这样做。如果您正在使用meta标签来获取FB Shared URL,以格式化它们希望它们在facebook内的方式,那么这确实至关重要。


2

此答案适用于开发人员。

清除缓存意味着该网页的新共享将显示OG标签中提供的新内容。但前提是您使用的网址的互动次数少于50(喜欢+分享)。这也不会影响到已经在Facebook上发布的指向该网页的旧链接。仅当再次在Facebook上共享URL时,Facebook显示链接的方式才会更新。

catandmouse的答案是正确的,但您也可以通过向graph.facebook.com发送发布请求来使Facebook清除OG(OpenGraph)缓存(撰写此答案时,HTTP和https均适用)。您不需要访问令牌。

对graph.facebook.com的发布请求可能如下所示:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: graph.facebook.com
Content-Length: 63
Accept-Encoding: gzip
User-Agent: Mojolicious (Perl)

id=<url_encoded_url>&scrape=true

在Perl中,可以使用以下代码,其中Mojo :: UserAgent库用于发送和接收HTTP请求:

sub _clear_og_cache_on_facebook {
    my $fburl     = "http://graph.facebook.com";
    my $ua        = Mojo::UserAgent->new;
    my $clearurl  = <the url you want Facebook to forget>;
    my $post_body = {id => $clearurl, scrape => 'true'};
    my $res       = $ua->post($fburl => form => $post_body)->res;
    my $code      = $res->code;
    unless ($code eq '200') {
        Log->warn("Clearing cached OG data for $clearurl failed with code $code.");
        }
    }
}

可以通过以下命令通过终端发送此发布请求:

curl -F id="<URL>" -F scrape=true graph.facebook.com

1

在URL后面附加?v = random_string。如果您将此想法与Facebook分享一起使用,请确保响应中的og:url参数与您分享的url匹配。这也将适用于google plus。

对于Facebook,您还可以通过向https://graph.facebook.com发出发布请求来强制重新抓取

{id: url,
scrape: true}

这正是我想要的。
蜜蜂

我无法通过邮递员发布上述JSON来工作,但发布原始文本字符串确实引起了刷新:id=http://www.ridr.me&scrape=true
Philipp Sumi

1

我刚刚在此处的相关文章上发布了一个简单的解决方案,该过程需要5秒钟 -Facebook 调试器:清除整个网站缓存的

简短答案...将您在永久站点设置中的worpdress网站上的永久链接更改为自定义链接。我只是加了一个下划线。
/ _%postname%/,
然后Facebook将它们全部抓取为新的URL,新的帖子。


这我简单又酷。不幸的是,它留下了不需要的链接名称。
Garavani '18

0

如果您将wordpress与缓存插件配合使用,请确保清除所有缓存。另外,请确保您使用的图像具有建议的facebook尺寸:1200(w)x 630(h)或600 x 315。


0

如果您使用托管的wordpress或缓存插件,则必须清除您的缓存,然后Facebook调试器工具才能获取新信息!

我已经花了数周的时间弄清楚为什么我所做的更改在24小时内都不会出现在facebook调试器中!!!解决方法是,我必须进入我的wordpress仪表板,单击顶部的godaddy图标,然后单击“刷新缓存”。我认为许多托管的wordpress托管人都有一个缓存来弄清楚如何清除它,您会变得很高兴。


清除Wordpress缓存将无济于事。至少对于我来说。
Garavani
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.