我们使用了链接:
http://www.facebook.com/sharer.php?u=[shared URL]
...分享特定页面。但是,Facebook Sharer使用图像和标题的缓存版本。有没有办法快速清除Facebook缓存或我们需要等多久才能更新数据?
我将<link rel='image_src' href='[preview image]' />
放在标签之间。
答案 0 :(得分:234)
我找到了解决问题的方法。你可以去这个网站:
https://developers.facebook.com/tools/debug
...然后输入您要共享的页面的URL,然后单击“debug”。它会自动提取元标记上的所有信息,并清除缓存。
答案 1 :(得分: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 );
答案 2 :(得分:10)
Facebook会将每个网址视为唯一网址,并根据该网址缓存该网页,因此,如果您想共享最新网址,最简单的解决方案是添加一个查询字符串,并将该网址分享。简单来说,只需在网址末尾添加?v = 1即可。可以使用任何数字代替1。
帽子提示:Umair Jabbar
答案 3 :(得分:3)
我认为这两个链接对你的问题相关的东西进行了广泛的讨论。 fb:通过调用
来清除兑现fbml.refreshRefUrl像这样
<tt>fbml.refreshRefUrl("http://www.mysite.com/someurl.php")
您可以从这里fb:ref学习相关内容。我希望它对你有用
答案 4 :(得分:3)
执行此操作的页面位于https://developers.facebook.com/tools/debug/,并且由于其他一些答案而略有改变。
将您的网址粘贴到其中,然后点击“调试”。然后点击URL文本字段下的“获取新的抓取信息”按钮,您应该全部设置。它会从您的页面中提取新鲜的元标记,但它们仍然会缓存,因此请记住,每当您更改它们时都需要执行此操作。如果您正在使用元标记来获取FB共享URL以格式化您希望它们进入Facebook内部的方式,这非常关键。
答案 5 :(得分:2)
此答案适用于开发人员。
清除缓存意味着此网页的新共享将显示OG标记中提供的新内容。但是,只有您正在处理的URL少于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
答案 6 :(得分:1)
在网址上附加?v = random_string。 如果您在Facebook共享中使用此想法,请确保响应中的og:url参数 匹配您分享的网址。这也适用于谷歌加。
对于Facebook,您还可以通过向https://graph.facebook.com
发送帖子请求来强制重新抓取{id: url,
scrape: true}
答案 7 :(得分:1)
我刚发布了一个简单的解决方案,此处相关帖子需要5秒钟 - Facebook debugger: Clear whole site cache
简短回答...将固定链接设置中的永久链接更改为自定义链接。我刚刚添加了一个下划线
/ _%postname%/
然后facebook将它们全部作为新网址,新帖子进行删除。
答案 8 :(得分:0)
如果您使用带有缓存插件的wordpress,请确保清除所有缓存。另外,请确保您使用的图像具有推荐的脸谱尺寸:1200(宽)x 630(高)或600 x 315.
答案 9 :(得分:0)
如果您使用托管wordpress或缓存插件,则必须在Facebook调试工具获取新信息之前清除您的CACHE!
我已经把头发拉了几个星期弄清楚为什么我做的改变不会在Facebook调试器中出现24小时!!!!修复是我必须进入我的wordpress仪表板,单击顶部的godaddy图标,然后单击“刷新缓存”。我认为许多托管wordpress的主机都有一个缓存来弄清楚如何清除它,你会变得很好。