web-dev-qa-db-ja.com

Facebook Sharerキャッシュをクリアする方法は?

リンクを使用しました:

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

...特定のページを共有します。ただし、Facebook Sharerはキャッシュバージョンの画像とタイトルを使用します。 Facebookのキャッシュをすばやくクリアする方法はありますか、またはデータが更新されるまでどれくらいの時間待たなければなりませんか?

タグの間に<link rel='image_src' href='[preview image]' />を配置しました。

112
catandmouse

問題の解決策を見つけました。次のサイトにアクセスできます。

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

...次に、共有するページのURLを入力し、[デバッグ]をクリックします。メタタグのすべての情報が自動的に抽出され、キャッシュもクリアされます。

234
catandmouse

Facebookは各URLを一意として扱い、そのURLに基​​づいてページをキャッシュします。そのため、最新のURLを共有する場合、最も簡単な解決策は、共有するURLにクエリ文字列を追加することです。簡単に言えば、URLの最後に?v = 1を追加するだけです。 1の代わりに任意の番号を使用できます。

帽子のヒント: mair Jabbar

10
Martin Carstens

APIを使用します Facebookにページを再度スクレイプさせるAPIがありますか?

$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
Vladimir Pak

これらの2つのリンクでは、問題に関連する問題について幅広い議論を行っています。 fb:refを呼び出して現金をクリアする

 fbml.refreshRefUrl 

このような

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

ここから関連するものを調べることができます fb:ref 。私はそれがあなたのために働くことを願っています

3
Awais Qarni

これを行うページは https://developers.facebook.com/tools/debug/ にあり、他のいくつかの回答からわずかに変更されています。

URLをそこに貼り付けて、「Debug」を押します。次に、[新しいスクレイプ情報を取得する]ボタンをクリックして、URLテキストフィールドの下にあるボタンを押すと、すべて設定できます。ページから新しいメタタグを取得しますが、それらは引き続きキャッシュされるため、変更するたびにこれを行う必要があることに注意してください。これは、メタタグを使用してFB共有URLを取得し、Facebook内で希望する形式にフォーマットする場合に非常に重要です。

3
Matt Toigo

この回答は開発者向けです。

キャッシュをクリアすると、このWebページの新しい共有には、OGタグで提供される新しいコンテンツが表示されます。ただし、作業中のURLのインタラクションが50未満の場合(いいね+共有など)。 Facebookにすでに投稿されているこのWebページへの古いリンクにも影響しません。 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
2
Thorkil Værge

ここで関連する投稿に5秒かかる簡単なソリューションを投稿しました- Facebookデバッガー:サイトキャッシュ全体をクリア

簡単な答え...パーマリンク設定のworpdressサイトのパーマリンクをカスタムに変更します。アンダースコアを追加しました。
/_%postname%/
その後、facebookはそれらをすべて新しいURL、新しい投稿としてスクレイピングします。

1
NowLiveLove

URLに?v = random_stringを追加します。 Facebook共有でこのアイデアを使用している場合、応答のog:urlパラメーターが共有しているURLと一致することを確認してください。これはgoogle plusでも機能します。

Facebookの場合は、 https://graph.facebook.com に投稿リクエストを行うことで、強制的に再クロールすることもできます

{id: url,
scrape: true}

マネージwordpressまたはキャッシュプラグインを使用した場合、facebookデバッガーツールが新しい情報を取得する前にキャッシュをクリアする必要があります。

私は24週間、Facebookのデバッガーに自分の行った変更が表示されない理由を理解するために何週間も髪を引っ張ってきました!!!!修正するには、wordpressダッシュボードに移動し、上部のgodaddyアイコンをクリックして、[キャッシュをフラッシュ]をクリックする必要があります。多くのマネージドwordpressホスティング事業者は、キャッシュをクリアする方法を見つけるためのキャッシュを持っていると思います。

0
Tim Marchini

キャッシュプラグインでwordpressを使用している場合は、必ずすべてのキャッシュをクリアしてください。また、使用している画像の推奨Facebookサイズが1200(w)x 630(h)または600 x 315であることを確認してください。

0
csandreas1