Wie lösche ich den Facebook Sharer Cache?

115

Wir haben den Link benutzt:

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

... um eine bestimmte Seite zu teilen. Facebook Sharer verwendet jedoch die zwischengespeicherte Version der Bilder und den Titel. Gibt es eine Möglichkeit, den Facebook-Cache schnell zu leeren, oder wie lange müssen wir warten, bis die Daten aktualisiert werden?

Ich habe <link rel='image_src' href='[preview image]' />zwischen die Tags gesetzt.

Katz 'und Maus
quelle

Antworten:

237

Ich habe eine Lösung für mein Problem gefunden. Sie könnten zu dieser Seite gehen:

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

... geben Sie dann die URL der Seite ein, die Sie freigeben möchten, und klicken Sie auf "Debuggen". Es extrahiert automatisch alle Informationen auf Ihren Meta-Tags und löscht auch den Cache.

Katz 'und Maus
quelle
1
Gibt es eine Möglichkeit, dasselbe zu erreichen, jedoch automatisch mit Javascript? Meine Website enthält Seiten, deren Name häufig geändert werden kann. Ich möchte nicht auf das 24-Stunden-Zurücksetzen des Cache auf Facebook warten, und ich kann auch nicht jedes Mal auf Facebook Lint gehen. Ich habe versucht, eine Ajax-Anfrage an Facebook Lint zu verwenden (mit developer.facebook.com/tools/debug/og/object?q= ... als URL), aber die Antwort lautet, dass der q-Wert (als Parameter an die obige URL übergeben) ist nicht erlaubt von Access-Control-Allow-Origin.
Giovanni Bitliner
3
Wenn Sie immer noch Probleme beim Aktualisieren haben, fügen Sie am Ende Ihrer URL einen zufälligen Abfragezeichenfolgenparameter hinzu.
JD Smith
2
Klicken Sie einfach auf die Fetch new scrape informationSchaltfläche
IvanRF
2
Ich habe neue Kratzinformationen abgerufen ... es sind die richtigen Daten, aber der Sharer zeigt alte Daten an. Können wir noch etwas tun?
Peege151
1
Wenn Sie Probleme mit dem in der Freigabe angezeigten Bild haben, versuchen Sie, den Bild-URI zu ändern.
Totymedli
10

API verwenden Gibt es eine API, um Facebook zu zwingen, eine Seite erneut zu kratzen?

$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 );
Vladimir Pak
quelle
10

Facebook behandelt jede URL als eindeutig und speichert die Seite basierend auf dieser URL zwischen. Wenn Sie also die neueste URL freigeben möchten, ist es am einfachsten, eine Abfragezeichenfolge mit der freigegebenen URL hinzuzufügen. In einfachen Worten fügen Sie am Ende der URL einfach? V = 1 hinzu. Anstelle von 1 kann eine beliebige Zahl verwendet werden.

Hutspitze: Umair Jabbar

Martin Carstens
quelle
Ich denke, dies wird sich auf die Anzahl der Links auswirken, die Ihre Seite erhalten hat, da sie für jede Version gezählt werden, oder?
André Laszlo
3

Ich denke, diese beiden Links haben eine breite Diskussion über Ihre problembezogenen Dinge. fb: Ref Clear Cashes durch Anruf

fbml.refreshRefUrl

so was

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

Sie können die verwandten Sachen von hier aus studieren fb: ref . Ich hoffe es wird für dich funktionieren

Awais Qarni
quelle
3

Die Seite dazu befindet sich unter https://developers.facebook.com/tools/debug/ und hat sich seit einigen anderen Antworten geringfügig geändert.

Fügen Sie dort Ihre URL ein und klicken Sie auf " Debuggen ". Klicken Sie dann auf die Schaltfläche " Neue Scrape-Informationen abrufen " unter dem URL-Textfeld, und Sie sollten fertig sein. Die neuen Meta-Tags werden von Ihrer Seite abgerufen, aber sie werden immer noch zwischengespeichert. Denken Sie also daran, dass Sie dies tun müssen, wenn Sie sie ändern. Dies ist sehr wichtig, wenn Sie mit den Meta-Tags spielen, damit FB Shared URLs innerhalb von Facebook so formatiert werden, wie Sie es möchten.

Matt Toigo
quelle
2

Diese Antwort richtet sich an Entwickler.

Das Löschen des Caches bedeutet, dass neue Freigaben dieser Webseite den neuen Inhalt anzeigen, der in den OG-Tags bereitgestellt wird. Aber nur, wenn die URL, an der Sie arbeiten, weniger als 50 Interaktionen aufweist (Likes + Shares). Alte Links zu dieser Webseite, die bereits auf Facebook gepostet wurden, sind davon nicht betroffen. Nur wenn Sie die URL erneut auf Facebook teilen, wird die Art und Weise, wie Facebook den Link anzeigt, aktualisiert.

Die Antwort von catandmouse ist korrekt, aber Sie können Facebook auch den OG-Cache (OpenGraph) löschen, indem Sie eine Post-Anfrage an graph.facebook.com senden (funktioniert zum Zeitpunkt des Schreibens dieser Antwort sowohl für http als auch für https). Sie benötigen kein Zugriffstoken.

Eine Post-Anfrage an graph.facebook.com kann wie folgt aussehen:

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

In Perl können Sie den folgenden Code verwenden, in dem die Bibliothek Mojo :: UserAgent zum Senden und Empfangen von HTTP-Anforderungen verwendet wird:

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.");
        }
    }
}

Das Senden dieser Post-Anfrage über das Terminal kann mit dem folgenden Befehl erfolgen:

curl -F id="<URL>" -F scrape=true graph.facebook.com
Thorkil Værge
quelle
1

Fügen Sie der URL einen? V = random_string hinzu. Wenn Sie diese Idee mit Facebook Share verwenden, stellen Sie sicher, dass der Parameter og: url in der Antwort mit der URL übereinstimmt, die Sie teilen. Dies funktioniert auch mit Google Plus.

Für Facebook können Sie das erneute Crawlen auch erzwingen, indem Sie eine Post-Anfrage an https://graph.facebook.com senden

{id: url,
scrape: true}
Purushothaman Ramraj
quelle
Genau das habe ich gesucht.
Biene
Ich konnte dies nicht zum Laufen bringen, indem ich den obigen JSON in Postman postete, aber das Posten einer Rohtextzeichenfolge verursachte eine Aktualisierung:id=http://www.ridr.me&scrape=true
Philipp Sumi
1

Ich habe gerade eine einfache Lösung veröffentlicht, die hier in einem verwandten Beitrag 5 Sekunden dauert - Facebook-Debugger: Löschen Sie die

kurze Antwort für den gesamten Site-Cache ... Ändern Sie Ihre Permalinks auf einer Worpdress-Site in den Permalinks-Einstellungen in eine benutzerdefinierte. Ich habe gerade einen Unterstrich hinzugefügt.
/ _% postname% /
dann kratzt Facebook sie alle als neue URLs, neue Beiträge.

NowLiveLove
quelle
Das ist einfach und cool. Leider hinterlässt es unerwünschte Linknamen.
Garavani
0

Wenn Sie WordPress mit einem Cache-Plugin verwenden, stellen Sie sicher, dass Sie alle Caches löschen. Stellen Sie außerdem sicher, dass das von Ihnen verwendete Bild die empfohlene Facebook-Größe hat: 1200 (B) x 630 (H) oder 600 x 315.

csandreas1
quelle
0

Wenn Sie verwaltete WordPress- oder Caching-Plugins verwendet haben, müssen Sie IHREN CACHE LÖSCHEN, bevor das Facebook-Debugger-Tool neue Informationen abrufen kann!

Ich habe mir wochenlang die Haare ausgezogen, um herauszufinden, warum Änderungen, die ich vorgenommen habe, 24 Stunden lang nicht im Facebook-Debugger angezeigt wurden !!!! Die Lösung ist, dass ich in mein WordPress-Dashboard gehen, auf das Godaddy-Symbol oben klicken und auf "Cache leeren" klicken muss. Ich denke, viele verwaltete WordPress-Hoster haben einen Cache, um herauszufinden, wie man ihn löscht, und Sie werden golden sein.

Tim Marchini
quelle
Das Löschen des Wordpress-Cache hilft nicht weiter. Zumindest für mich.
Garavani