如何清除Facebook Sharer缓存?

时间:2011-03-10 06:09:53

标签: facebook social-networking hyperlink social-media

我们使用了链接:

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

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

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

10 个答案:

答案 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的主机都有一个缓存来弄清楚如何清除它,你会变得很好。