Jak wyczyścić pamięć podręczną Facebook Sharer?

116

Skorzystaliśmy z linku:

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

... aby udostępnić określoną stronę. Jednak Facebook Sharer używa buforowanej wersji obrazów i tytułu. Czy istnieje sposób na szybkie wyczyszczenie pamięci podręcznej Facebooka lub jak długo musimy czekać, aż dane zostaną zaktualizowane?

Umieściłem <link rel='image_src' href='[preview image]' />między tagami.

Kot i mysz
źródło

Odpowiedzi:

237

Znalazłem rozwiązanie mojego problemu. Możesz przejść do tej witryny:

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

... następnie wpisz adres URL strony, którą chcesz udostępnić, i kliknij „debuguj”. Automatycznie wyodrębni wszystkie informacje z twoich metatagów, a także wyczyści pamięć podręczną.

Kot i mysz
źródło
1
Czy istnieje sposób, aby uzyskać to samo, ale automatycznie za pomocą javascript? Moja witryna zawiera strony, które często zmieniają nazwę. Nie chciałbym czekać na 24 godziny resetowania pamięci podręcznej przez Facebooka, ani nie mogę za każdym razem przejść do Facebook Lint. Próbowałem użyć żądania Ajax do Facebooka Lint (z developers.facebook.com/tools/debug/og/object?q= ... jako url), ale odpowiedź jest taka, że ​​wartość q (przekazana jako parametr do powyższego adresu URL) to niedozwolone przez Access-Control-Allow-Origin.
Giovanni Bitliner
3
Jeśli nadal nie możesz go odświeżyć, spróbuj dodać losowy parametr ciągu zapytania na końcu adresu URL.
JD Smith
2
Wystarczy kliknąć Fetch new scrape informationprzycisk
IvanRF
2
Pobrałem nowe informacje ze skrobania ... widzę, że są to właściwe dane, ale osoba udostępniająca pokazuje stare dane. Czy jest coś jeszcze, co możemy zrobić?
Peege151
1
Jeśli masz problem z obrazem wyświetlanym w udziale, spróbuj zmienić identyfikator URI obrazu.
totymedli
10

Użyj interfejsu API Czy istnieje interfejs API, aby zmusić Facebooka do ponownego zeskrobania strony?

$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
źródło
10

Facebook traktuje każdy adres URL jako unikalny i buforuje stronę na podstawie tego adresu, więc jeśli chcesz udostępnić najnowszy adres URL, najprostszym rozwiązaniem jest dodanie ciągu zapytania do udostępnianego adresu URL. W prostych słowach po prostu dodaj? V = 1 na końcu adresu URL. Zamiast 1 można użyć dowolnej liczby.

Końcówka kapelusza: Umair Jabbar

Martin Carstens
źródło
Myślę, że wpłynie to na liczbę linków, które otrzymała Twoja strona, ponieważ będą one liczone dla każdej wersji, prawda?
André Laszlo
3

Wydaje mi się, że te dwa linki mają szeroką dyskusję na temat twoich problemów. fb: ref wyczyść pieniądze, sprawdzając

fbml.refreshRefUrl

lubię to

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

Możesz przestudiować powiązane rzeczy stąd fb: ref . Mam nadzieję, że to zadziała

Awais Qarni
źródło
3

Strona, na której można to zrobić, znajduje się pod adresem https://developers.facebook.com/tools/debug/ i nieznacznie się zmieniła od czasu niektórych innych odpowiedzi.

Wklej tam swój adres URL i kliknij „ Debuguj ”. Następnie naciśnij przycisk „ Pobierz nowe informacje o zdrapce ” pod polem tekstowym adresu URL i wszystko powinno być gotowe. Spowoduje to pobranie nowych metatagów z Twojej strony, ale nadal będą one buforowane, więc pamiętaj, że musisz to zrobić za każdym razem, gdy je zmienisz. Jest to bardzo ważne, jeśli bawisz się metatagami, aby uzyskać udostępnione adresy URL FB w celu sformatowania ich na Facebooku.

Matt Toigo
źródło
2

Ta odpowiedź jest przeznaczona dla programistów.

Wyczyszczenie pamięci podręcznej oznacza, że ​​nowe udostępnienia tej strony internetowej będą wyświetlać nową zawartość, która jest dostarczana w tagach OG. Ale tylko wtedy, gdy adres URL, nad którym pracujesz, ma mniej niż 50 interakcji (polubienia + udostępnienia). Nie wpłynie to również na stare linki do tej strony, które zostały już opublikowane na Facebooku. Dopiero po ponownym udostępnieniu adresu URL na Facebooku sposób, w jaki Facebook pokazuje link, zostanie zaktualizowany.

Odpowiedź catandmouse jest prawidłowa, ale możesz również sprawić, by Facebook wyczyścił pamięć podręczną OG (OpenGraph), wysyłając żądanie wpisu do graph.facebook.com (działa zarówno dla http, jak i https od momentu napisania tej odpowiedzi). Nie potrzebujesz tokena dostępu.

Żądanie wpisu do graph.facebook.com może wyglądać następująco:

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

W Perlu można użyć następującego kodu, w którym biblioteka Mojo :: UserAgent służy do wysyłania i odbierania żądań 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.");
        }
    }
}

Wysłanie tego żądania pocztowego przez terminal można wykonać za pomocą następującego polecenia:

curl -F id="<URL>" -F scrape=true graph.facebook.com
Thorkil Værge
źródło
1

Dołącz? V = random_string do adresu URL. Jeśli korzystasz z tego pomysłu z udostępnianiem na Facebooku, upewnij się, że parametr og: url w odpowiedzi odpowiada udostępnianemu adresowi URL. Działa to również z Google Plus.

W przypadku Facebooka możesz również wymusić ponowne indeksowanie, wysyłając żądanie wpisu do https://graph.facebook.com

{id: url,
scrape: true}
Purushothaman Ramraj
źródło
To jest dokładnie to, czego szukałem.
Pszczoła
Nie mogłem zmusić tego do działania, publikując powyższy kod JSON w programie Postman, ale opublikowanie nieprzetworzonego ciągu tekstowego spowodowało odświeżenie:id=http://www.ridr.me&scrape=true
Philipp Sumi
1

Właśnie opublikowałem proste rozwiązanie, które zajmuje tutaj 5 sekund w powiązanym poście tutaj - debuger Facebooka: Wyczyść całą pamięć podręczną witryny

Krótka odpowiedź ... zmień swoje permalinki na stronie worpdress w ustawieniach permalinków na niestandardową. Właśnie dodałem podkreślenie.
/ _% postname% /,
a następnie Facebook usuwa je wszystkie jako nowe adresy URL, nowe posty.

NowLiveLove
źródło
To jest proste i fajne. Niestety pozostawia niechciane nazwy linków.
Garavani
0

jeśli używasz wordpressa z wtyczką pamięci podręcznej, upewnij się, że wyczyściłeś wszystkie swoje pamięci podręczne. Upewnij się również, że obraz, którego używasz, ma zalecany rozmiar na Facebooku: 1200 (szer.) X 630 (wys.) Lub 600 x 315.

csandreas1
źródło
0

Jeśli korzystałeś z zarządzanych wtyczek wordpress lub buforowania, musisz wyczyścić swoją pamięć podręczną, zanim narzędzie debugera Facebooka będzie mogło pobrać nowe informacje!

Wyrywam sobie włosy od tygodni, zastanawiając się, dlaczego wprowadzone przeze mnie zmiany nie pojawią się w debugerze Facebooka przez 24 godziny !!!! Rozwiązanie polega na tym, że muszę przejść do mojego pulpitu WordPress, kliknąć ikonę GoDaddy na górze i kliknąć „opróżnij pamięć podręczną”. Myślę, że wielu zarządzanych hosterów Wordpress ma pamięć podręczną, aby dowiedzieć się, jak ją wyczyścić, a będziesz złoty.

Tim Marchini
źródło
Wyczyszczenie pamięci podręcznej Wordpress nie pomoże. Przynajmniej dla mnie.
Garavani