2011-03-10 26 views
108

我们使用的链接:如何清除Facebook Sharer缓存?

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

...分享特定的页面。但是,Facebook Sharer使用图像和标题的缓存版本。有没有办法快速清除Facebook缓存,或者我们需要等待多长时间才能更新数据?

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

回答

228

我找到了解决我的问题。你可以去这个网站:

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

...然后把你要共享的网页的URL,然后单击“调试”。它会自动提取你的元标记的所有信息,并清除缓存。

+1

有没有办法让相同的事情,但自动与JavaScript? 我的网站有可能经常改变他们名字的网页。我不想等待Facebook重置缓存的24小时,我也不能每次都去Facebook Lint。 我已经尝试使用ajax请求到Facebook Lint(使用https://developers.facebook.com/tools/debug/og/object?q = ...作为url),但响应是q值(作为参数传递到上面的url)是Access-Control-Allow-Origin不允许的。 – 2012-03-11 22:02:32

+0

@Giovanni Chetelodicoafare,尝试使用cron作业(Linux)或计划任务(窗口)访问https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fyour- website.com。 Cron作业可在大多数托管服务提供商的管理面板中找到。 – 2013-05-16 15:01:02

+3

如果您在刷新时仍遇到问题,请尝试将随机查询字符串参数添加到URL的末尾。 – 2014-07-24 15:40:51

3

我的事这两个环节对你的问题相关的东西广泛的讨论。 FB:通过调用

 
fbml.refreshRefUrl 

这样

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

你可以从这里fb:ref研究相关的东西REF明确的现金。我希望它会为你工作

10

使用的API Is there an API to force Facebook to scrape a page again?

$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); 
+3

没有access_token,这不起作用。 – andrewtweber 2016-01-17 02:08:31

9

的Facebook将每个URL作为独特的缓存基于该URL的网页,所以如果你想分享最新的URL最简单的办法是增加一个查询字符串该网址被分享。简单地说,只需在url的末尾添加?v = 1即可。任何数量的可代替1

帽尖的使用:Umair Jabbar

+0

我认为这会影响您网页收到的链接数量,因为它们会被计入每个版本中,对吗? – 2018-02-13 23:59:52

3

的页面做,这是在https://developers.facebook.com/tools/debug/是由于一些其他的答案已经略有改变。

在那里粘贴您的网址,然后点击“调试”。然后点击URL文本字段下的“获取新的抓取信息”按钮,应该全部设置。它会从您的页面中提取新的元标记,但它们仍然会缓存,因此请记住,每当您更改它时都需要执行此操作。如果您使用元标记来获取FB共享URL来格式化您希望他们在Facebook内部的方式,这非常重要。

1

将?v = random_string追加到url。 如果您在Facebook共享中使用此想法,请确保响应 中的og:url参数与您正在共享的网址匹配。这也适用于谷歌加。

对于Facebook来说,也可以通过使POST请求强制重新抓取到https://graph.facebook.com

{id: url, 
scrape: true} 
+0

这正是我正在寻找的。 – Bee 2017-05-31 16:53:05

+0

我无法在Postman中发布上述JSON,但发布原始文本字符串确实会导致刷新:'id = http:// www.ridr.me&scrape = true' – 2017-09-13 21:31:26

2

这个答案是针对开发人员。

清除缓存意味着该网页的新股将显示其在OG标签提供的新内容。但是,只有当您正在使用的网址少于50次互动时(喜欢+份额)。它也不会影响已经在Facebook上发布的此网页的旧链接。只有在Facebook上再次分享URL时,Facebook才会更新链接。

catandmouse的回答是正确的,但您也可以通过向graph.facebook.com(在撰写此答案时同时适用于http和https)向Facebook发送一封邮件请求以清除OG(OpenGraph)缓存。您不需要访问令牌。

POST请求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中,你可以使用下面的代码,库魔:: 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') { 
     JIX::Log->warn("Clearing cached OG data for $clearurl failed with code $code."); 
     } 
    } 
} 

发送通过所述终端此篇请求可以用下面的命令来完成:

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

如果你正在使用WordPress的缓存插件,请确保你清除所有的缓存。此外,请确保您使用的图像具有推荐的Facebook大小:1200(w)x 630(h)或600 x 315.

0

我刚刚发布了一个简单的解决方案,需要5秒钟的相关帖子 - Facebook debugger: Clear whole site cache

简短的回答......在固定链接设置的worpdress网站改变你的永久链接到一个自定义。我刚刚添加了一个下划线。
/_%postname%/
那么Facebook擦伤他们都为新网址,新职位。

0

如果使用了管理Wordpress或缓存插件,你必须清除缓存之前,Facebook的调试工具,可以获取新的信息!

我一直在拉我的头发了几个星期搞清楚为什么我在Facebook的调试器不会出现24小时的变化!!!!解决方法是我必须进入我的wordpress仪表板,单击顶部的godaddy图标,然后单击“刷新缓存”。我认为很多受托管的WordPress主办方都有一个缓存来弄清楚如何清除它,并且您将成为金牌。