Facebook Open Graph nie czyści pamięci podręcznej

174

Mam problemy z moimi metatagami w Open Graph. Wygląda na to, że Facebook buforuje stare wartości moich metatagów. Stare wartości atrybutów og:titlei og:urlnadal są używane, mimo że już je zmieniłem.

Uruchomiłem Lint na stronie w mojej witrynie i pojawiło się to:

Zrzut ekranu programu Facebook Open Graph lint

Zauważ, że istnieją dwie wartości og:titlei og:url, a ostatnia z nich przeważała. Jednak ostatnie dwa wpisy to STARE wpisy , których użyłem w tej witrynie. Obecnie używam tych metatagów (możesz sprawdzić, czy przeglądasz źródło kodu HTML):

<meta property="og:title" content="Smart og rummelig pusletaske fra Petit Amour med god plads til alt &#8211; værdi 1.099 kr &#8211; køb nu kun 599 kr   "/>
<meta property="og:description" content="Pinq.dk - Det gode liv for det halve"/>
<meta property="og:type" content="product"/>
<meta property="og:url" content="http://pinq.dk/tilbud/landsdaekkende/lissy/"/>
<meta property="og:image" content="http://pinq.dk/wp-content/themes/pinq/images/logo-top.png"/>
<meta property="og:site_name" content="Pinq" />
<meta property="fb:app_id" content="161840830532004" />

Dlaczego buforowanie Facebooka og:titlei og:url? Czy ktoś ma ten sam problem?

Ardee Aram
źródło
Przypuszczam, że to jak historia? Widzę, jak FB pobiera najnowsze titlei urldla Ciebie (w tabeli informacyjnej), więc po co zawracać sobie głowę?
ifaour
Problem w tym, że facebook Like count jest nadal dla OLD og: url ( pinq.dk ), który wynosi około 200+ , w przeciwieństwie do liczenia dla pinq.dk/tilbud/landsdaekkende/lissy
Ardee Aram
i nie sądzę, żeby to była historia. Więcej og: url ustawiono (podobno) dwukrotnie, z czego ostatni był dominujący. W jakiś sposób stare wartości, które zostały już usunięte z kodu, nadal wpływają na wartości meta.
Ardee Aram,
3
Cóż, przeczytaj to . Zwłaszcza sekcja Edycja metatagów . Nie jestem pewien, czy jest to powiązane, ale może pomóc. Sprawdzę to później, przepraszam stary!
ifaour
2
To chyba to. „Możesz zaktualizować atrybuty swojej strony, aktualizując tagi <meta> swojej strony. Zwróć uwagę, że og: title i og: type można edytować tylko początkowo - po otrzymaniu 50 polubień tytuł zostanie naprawiony, a po 10 000 polubień. typ zostanie ustalony. Te właściwości są ustalone, aby uniknąć zaskoczenia użytkowników, którzy polubili już stronę. Zmiana tytułu lub znaczników typu po osiągnięciu tych limitów nic nie daje, strona zachowuje oryginalny tytuł i typ. ". Dzięki ifaour!
Ardee Aram

Odpowiedzi:

304
  1. Przejdź do http://developers.facebook.com/tools/debug
  2. Wprowadź adres URL następujący po fbrefresh=CAN_BE_ANYTHING

Przykłady:

  1. http://www.example.com?fbrefresh=CAN_BE_ANYTHING
  2. http://www.example.com?postid=1234&fbrefresh=CAN_BE_ANYTHING
  3. LUB odwiedź: http://developers.facebook.com/tools/debug/og/object?q=http://www.example.com/?p=3568&fbrefresh=89127348912

Miałem ten sam problem zeszłej nocy i otrzymałem to rozwiązanie z jakiejś strony internetowej.

Facebook zapisuje twoją miniaturę pamięci podręcznej. Nie odświeży się, nawet jeśli usuniesz miniaturę / obraz z serwera. Ale Facebook umożliwia odświeżanie za pomocąfbrefresh

Mam nadzieję, że to pomoże.

PC
źródło
30
parametr fbrefresh może nie być konieczny, ponieważ narzędzie do debugowania odświeża obiekt bez niego.
alexandru.topliceanu
7
Nie czyści pamięci podręcznej w ogóle, chyba że użyjesz tego parametru.
Umur Kontacı
26
Nieprawda, dodanie tego parametru nie ma znaczenia dla działania narzędzia debugowania - nie ma żadnego odniesienia do tego parametru w narzędziu debugującym ani w kodzie skrobaka
Igy
7
Nie ma potrzeby używania parametru fbrefresh, ale musisz być zalogowany jako administrator aplikacji FB, która jest właścicielem tej domeny, w przeciwnym razie pamięć podręczna nie zostanie zaktualizowana.
Felipe Brahm
3
Mogę sprawdzić, czy dodanie parametru fbrefresh zadziałało u mnie. Gdy udostępniłem adres URL, używał on starych danych, mimo że debugger pokazywał prawidłowe dane. Ale kiedy użyłem debuggera z parametrem fbrefresh, nawet zwykłe akcje używały poprawnych danych.
lody
82

Najczęściej głosowane pytanie jest dość nieaktualne:

Oto jedyne 2 opcje, które powinny być używane od listopada 2014 r . :

Dla osób niebędących programistami

  1. Użyj debugera FB: https://developers.facebook.com/tools/debug/og/object
  2. Wklej adres URL, który chcesz ponownie zbuforować. (Upewnij się, że używasz tego samego adresu URL zawartego w tagu og: url)
  3. Kliknij ponownie przycisk Pobierz informacje o zdrapce

Dla programistów

  1. Wykonaj programowo wywołanie GET na ten adres URL: https://graph.facebook.com/?id=[YOUR_URL_HERE]&scrape=true (patrz: https://developers.facebook.com/docs/games_payments/takingpayments#scraping )
  2. Upewnij się, że tag og: url zawarty w nagłówku tej strony pasuje do tego, który przekazujesz.
  3. możesz nawet przeanalizować odpowiedź json, aby uzyskać liczbę udziałów tego adresu URL.

Dodatkowe informacje o aktualizowaniu obrazów

  • Jeśli adres URL og: image pozostaje taki sam, ale obraz faktycznie się zmienił, nie zostanie zaktualizowany ani odzyskany przez skrobaki Facebooka, nawet robiące powyższe. (nawet podanie? last_update = [TIMESTAMP] na końcu adresu URL obrazu nie zadziałało).
  • Jedynym skutecznym sposobem obejścia problemu było przypisanie nowej nazwy do obrazu.

Uwaga dotycząca aktualizacji zdjęć lub filmów we wcześniej opublikowanych postach:

  • Kiedy wywołasz debuger, aby usunąć zmiany w tagach og: twojej strony, wszystkie poprzednie udostępnienia tego adresu URL na Facebooku będą nadal wyświetlać stary obraz / wideo. Nie ma możliwości zaktualizowania wszystkich poprzednich postów i jest to zgodne z projektem ze względów bezpieczeństwa. W przeciwnym razie ktoś mógłby udawać, że użytkownik udostępnił coś, czego tak naprawdę nie zrobił.
Oriol Esteban
źródło
Wygląda na to, że nie zwraca liczby udostępnień dla mojej strony. W tym poście przeczytałem: „ stackoverflow.com/questions/3581488/… ”, że aby dane wyjściowe tego punktu końcowego zawierały jakiekolwiek informacje, musisz mieć na stronie przycisk polubienia / udostępniania Facebooka.
WillyBurb
upewnij się, że tagi znajdują się w HEAD, a nie w BODY strony - debugger ostrzeże Cię o tym i zostaną zignorowane (tak, wiem, że o tym wspomniałeś, chciałem tylko podkreślić tę kwestię)
Simon_Weaver
@Oriol Esteban. Czy znalazłeś inne sposoby aktualizowania obrazów?
Petr,
3
@Oriol Kiedy ostatnio tego próbowałem, musiałem OPUBLIKOWAĆ post na ten adres URL (zgodnie z developers.facebook.com/docs/sharing/opengraph/… )
Glen T
1
Wszelkie pomysły, jak porysować pamięć podręczną podczas zmiany adresu URL og: video ????? Zrobiłem małą edycję mojego filmu i zmieniłem adres URL, a Facebook nadal wyświetla starą wersję! Zrobiłem oczywiście rysę w debugowaniu (i tam widać to poprawnie), ale nie w poście! ... to doprowadza mnie do szału!
RayOnAir
19

Jeśli masz wiele stron i nie chcesz ich odświeżać ręcznie - możesz to zrobić automatycznie.

Powiedzmy, że masz stronę profilu użytkownika ze zdjęciem:

$url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_profile;
$user_photo = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_photo;

<meta property="og:url" content="<?php echo $url; ?>"/>
<meta property="og:image" content="<?php echo $user_photo; ?>"

Po prostu dodaj to do swojej strony:

// with jQuery
$.post(
    'https://graph.facebook.com',
    {
        id: '<?php echo $url; ?>',
        scrape: true
    },
    function(response){
        console.log(response);
    }
);

// with "vanilla" javascript
var fbxhr = new XMLHttpRequest();
fbxhr.open("POST", "https://graph.facebook.com", true);
fbxhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
fbxhr.send("id=<?php echo $url; ?>&scrape=true");

Spowoduje to odświeżenie pamięci podręcznej Facebooka. Jeśli korzystasz z rozwiązania jQuery, spójrz na „response” w console.log - znajdziesz tam pole „updated_time” i inne przydatne informacje.

Zhorzh Alexandr
źródło
było to jedyne spójne rozwiązanie, które mogło zniszczyć pamięć podręczną obrazu. używanie fbrefreshnie zrobiło nic dla mojego problemu.
hellatan
Cześć, próbuję tej metody, ale pojawiają się błędy, $ this-> output ('<script type = "text / javascript"> $ (document) .ready (function () {$ .post (" graph .facebook.com ", {id:" '. $ this-> content [' canonical '].' ", scrape: true}, function (response) {console.log (odpowiedź);});}); < / skrypt> ');
monsterboy
Otrzymuję następujący błąd Uncaught ReferenceError: $ nie jest zdefiniowane (funkcja anonimowa) każda pomoc byłaby bardzo mile
widziana
@monsterboy $ - to jest skrót do funkcji jQuery. $ .post () to to samo co jQuery.post () Aby użyć tej biblioteki, musisz ją najpierw zaimportować: <script src = " code.jquery.com/jquery-latest.min.js " type = "text / javascript "> </script>
Zhorzh Alexandr
@ZhorzhAlexandr thx za odpowiedź ur, ale używam wordpress i mam jeden post, który można edytować codziennie, więc jak mogę używać tego skryptu za każdym razem przed udostępnieniem?
Antwan,
12

Miniatura OG nie wydaje się odświeżać, nawet jeśli przekazuje zmienną fbrefresh. Aby zaktualizować to bez czekania na automatyczne czyszczenie, musisz zmienić nazwę pliku wartości metatagu powiązanego z miniaturą i odświeżyć.

Seb
źródło
Zgodnie z innymi odpowiedziami możesz wymusić odświeżenie za pomocą fbrefresh parametru URL.
Sam Mussmann
1
@SamMussmann Wygląda na to, że tylko (jeśli w ogóle to robi) odświeża pamięć podręczną zawartości znacznika OG, a NIE rzeczywisty obraz znaleziony z adresu URL wspomnianej zawartości. EG: Zachowujesz tagi OG bez zmian, ale zmień plik obrazu (zachowując tę ​​samą nazwę), a sam obraz pozostanie w pamięci podręcznej. Nie znalazłem sposobu, aby to usunąć poza tym, jak powiedział Seb, musisz zmienić nazwę pliku obrazu.
Nick M.
@Nick M Czy znalazłeś inne rozwiązania?
Petr,
Rozwiązany. Rozwiązałem to dodając? T = TIMESTAMP do adresu URL mojego obrazu w skrypcie php, gdzie generujemy tagi. Na razie to działa.
Petr,
Po prostu próbowałem zmienić nazwę pliku obrazu i zaktualizowałem wartość metatagu, ale też nie działało.
Antonio Ooi,
7

Miałem te same problemy z używaniem og:image, kilka prób zmiany nazwy pliku lub wyczyszczenia pamięci podręcznej FB nie działało ani przez debugger Facebooka, ani testowanie za pośrednictwem rzeczywistego konta.

Nowe wytyczne na Facebooku podają, że rozmiar obrazu powinien wynosić 1200 x 630 lub mając ten współczynnik proporcji, wydaje się to być błędne, jedyną rzeczą, która działała dla mnie, było użycie obrazu o wymiarach kwadratowych .

Edytuj * Po kilku godzinach wróciłem do 1200 x 630 i zadziałało magicznie, było magicznie.

Zmieniłem również nazwy plików na f * ^ * kfacebook.jpg, nie jestem pewien, czy to pomogło, ale było dobrze.

Wyck
źródło
6

W zasadzie odpowiedzią jest cierpliwość;)

Dziś rano sprawdziłem Linter i og: title i og: url wyświetla się poprawnie, bez zbędnych wartości. Myślę, że FaceBook automatycznie czyści pamięć podręczną w określonych odstępach czasu. Muszę tylko poczekać.

wprowadź opis obrazu tutaj

Ardee Aram
źródło
Z Facebooka dla programistów , pamięć podręczna obiektów wygasa co 7 dni, a Facebook automatycznie ponownie zeskrobuje obiekt, gdy zostanie ponownie użyty.
Venugopal
4

Po prostu natknęliśmy się na to, jak się okazuje, nie lintingowaliśmy właściwego adresu URL, ponieważ prawdziwy adres URL zawierał ciąg zapytania (no, inna strona, jeśli chodzi o bota).

http://example.com/

! ==

http://example.com/?utm_campaign=foo

Linter będzie buforowania swoją stronę, nie trzeba czekać.

Ryan Florence
źródło
4

Tak, facebook automatycznie czyści pamięć podręczną co 24 godziny: w rzeczywistości Facebook przegląda strony i aktualizuje pamięć podręczną co 24 godziny https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo .

kbsbng
źródło
Zgodnie z aktualną dokumentacją czas trwania pamięci podręcznej wynosi 30 dni.
patrickhawley
1
zaktualizowany link do tych informacji - developers.facebook.com/docs/plugins/faqs - możesz ustawić częstsze skrobanie
Mousey
4

Ooook, w końcu to pomogło (używam IP.Board). Musiałem zrobić:

  1. Zmień adres URL og: image na mojej stronie (konfiguracja ogólna).
  2. Wypróbuj tę metodę z? Fbrefresh = 1154464gd56

Podziękowania dla autora za ten wątek!

EDYCJA: Co więcej, należy pamiętać o wymaganiach dotyczących obrazu. Na razie (styczeń 2013) to: - co najmniej 200 px w obu kierunkach - maksymalny współczynnik 3: 1

Matt
źródło
3

Należy dodać, że w adresie URL rozróżniana jest wielkość liter . Zauważ, że:

apps.facebook.com/ HELLO

jest inaczej w oczach lintera

apps.facebook.com/ hello

Pamiętaj, aby użyć dokładnego adresu URL witryny, który został wprowadzony w ustawieniach programisty aplikacji. W przeciwnym razie linter zwróci właściwości, ale nie odświeży pamięci podręcznej.

Justin
źródło
3

Przepraszam, ale prawidłowa odpowiedź to:

Nie ma prostego sposobu na zaktualizowanie adresu URL otwartego wykresu og: image z natychmiastowym wynikiem. Jest buforowany do aktualizacji fb (podobno co 24 godziny)

Oto rzeczy, które zostały zgłoszone przez innych, ale z żadnym z nich nie odniosłem sukcesu.

  • Wybierając „Pobierz nowe informacje o zdrapce”
  • Zmiana aktualnej nazwy pliku obrazu i / lub usunięcie oryginału
  • Dodanie ciągu zapytania do adresu URL obrazu poprzez dołączenie kodu PHP TIMESTAMP lub? Cokolwiek
  • Dodanie ciągu zapytania „... yoursite.com/?fbrefresh=anything” do adresu URL pobierania debugera
  • Wybierając link Graph API na dole strony og dev
  • Wybór, aby zobaczyć dokładnie to, co widzi skrobak - nie wydaje się żądać w czasie rzeczywistym niebuforowanych danych zdrapywania, nadal wyświetla buforowany adres URL obrazu, nawet jeśli plik już nie istnieje

Sprawdzanie kodu jest zawsze na drodze, aby potwierdzić, że nie jest to problem z pamięcią podręczną przeglądarki lub usługą buforowania. Jeśli meta informacje w Twoim kodzie są aktualne i wypróbowałeś wszystkie powyższe rozwiązania (chyba że pojawi się inna sugestia), prawidłowa odpowiedź brzmi: nie możesz nic zrobić, tylko czekać .

Philip Ingram
źródło
1

Dowiedziałem się, że jeśli twój obraz ma 72 dpi, spowoduje to błąd rozmiaru obrazu. Zamiast tego użyj 96 dpi. Mam nadzieję że to pomoże.

Gordon
źródło
1
  1. Przejdź do http://developers.facebook.com/tools/debug

  2. Wklej adres URL strony i kliknij debuguj. Jeśli Twoja witryna używa aliasów adresów URL, upewnij się, że używasz tego samego adresu URL, którego używa Facebook dla udostępnianej strony (przykład: w Drupalu użyj ścieżki node / * zamiast aliasu, jeśli strona jest udostępniana za pośrednictwem tego adresu URL).

  3. Kliknij w części „Udostępnij podgląd” na link „Zobacz w oknie dialogowym udostępniania”
Hans Rossel
źródło
Najlepsze rozwiązanie! Dziękuję
MeV
0

Miałem podobne doświadczenie. Link do witryny wyświetlał 404 w podglądzie wygenerowanym przez Facebooka. Okazuje się, że metadane og: url były nieprawidłowe. Naprawiliśmy to już kilka dni temu, ale nadal widzieliśmy 404 na podglądzie. Skorzystaliśmy z narzędzia dostępnego pod adresem https://developers.facebook.com/tools/debug/ i to wymusiło odświeżenie (nie trzeba było przy okazji dodawać żadnych parametrów) W naszym przypadku Facebook nie odświeżał cache po 24 godzinach godzin, ale narzędzie pomogło to wymusić.

jawss510
źródło
0

Jest to pamięć podręczna, często odświeża się, to jest to, co cache powinno robić od czasu do czasu. Więc czekanie w końcu zadziała, ale czasami trzeba to zrobić szybciej. Zmiana nazwy pliku działa.

Srneczek
źródło
Więc dlaczego -1? Dosłownie nikt nie odpowiedział na najprostsze rozwiązanie ZMIANY NAZWY PLIKU i tak naprawdę nie działa to tak jak inne (+/- 5) odpowiedzi, które nie zgodziły się lub przynajmniej tak zrobiły, ale są nieaktualne. Oczywiście, jeśli z jakiegoś powodu nie możesz zmienić nazwy pliku, ta odpowiedź nie pomoże.
Srneczek 21.04.15
0

Ja też miałem ten problem. Skrobak pokazuje właściwe informacje, ale adres URL udziału był nadal wypełniony starymi danymi.

Sposób, w jaki sobie z tym poradziłem, polegał na użyciu metody podawania zamiast udostępniania, a następnie ręcznym wypełnieniu danych (co nie jest ujawniane za pomocą metody udostępniania)

Coś takiego:

shareToFB = () => {
    window.FB.ui({
    method: 'feed',
    link: `signup.yourdomain.com/?referrer=${this.props.subscriber.sid}`,
    name: 'THIS WILL OVERRIDE OG:TITLE TAG',
    description: 'THIS WILL OVERRIDE OG:DESCRIPTION TAG',
    caption: 'THIS WILL OVERRIDE THE OG:URL TAG'
  });
};
Peege151
źródło
0

Naprawdę łatwe rozwiązanie. Przetestowane i działające. Musisz tylko wygenerować nowy adres URL podczas aktualizacji tagów meta. Jest to tak proste, jak dodanie „& cacheBuster = 1” do adresu URL. Jeśli zmienisz metatagi, po prostu zwiększ wartość „& cacheBuster = 2”

Oryginalny adres URL

www.example.com

Adres URL w przypadku aktualizacji og metatagów:

www.example.com?cacheBuster=1

Adres URL, gdy og metatagi zostaną ponownie zaktualizowane:

www.example.com?cacheBuster=2

Facebook potraktuje każdy z nich jak nowy adres URL i otrzyma świeże metadane.

Będzie
źródło
0

Wiele lat później jest to nadal powszechny problem, ale nie zawsze jest to pamięć podręczna na Facebooku: Bardzo często jest to błąd ludzki (pozwól mi rozwinąć)

OG: TYPE wpływa na zeskrobanie obrazu:

  1. https://ogp.me/#type_article to nie to samo co https://ogp.me/#type_website

Należy pamiętać, że og: type = website spowoduje, że wszystkie / podstrony / tego adresu URL staną się „kanoniczne”. Oznacza to, że będziesz mieć problemy z aktualizacją obrazów za pomocą skrobaka, bez względu na to, co zrobisz.

Rozważ to „założenie i powszechny błąd”

- <meta property="og:type" content="website" />=> https://www.example.org (rodzic)
- <meta property="og:type" content="website" />=> https://www.example.org/sub-page/
- <meta property="og:type" content="website" />=> https://www.example.org/sub-page/child -2 /
- Ergo: /sub-page/i /child-2/odziedziczyog:image po rodzicu

To nie są „wszystkie strony internetowe”, 1 to strona internetowa, pozostałe to artykuły.

Jeśli to zrobisz, Facebook pomyśli, że wszystkie są kanoniczne i umieści PIERWSZY obraz og: we wszystkich. (spróbuj, zobaczysz) - jeśli ustawisz og: url jako domenę główną lub nadrzędną, powiedziałeś Facebookowi, że wszystkie są kanoniczne. (jest ku temu dobry powód, ale jest poza tematem)

Rozważ to rozwiązanie (czego „naprawdę chce” większość ludzi)

- <meta property="og:type" content="article" />=> https://www.example.org/sub-page/
- <meta property="og:type" content="article" />=> https://www.example.org/sub-page/child-2/

Jeśli zrobisz to teraz, Facebook będzie znacznie mniej problemów z zeskrobywaniem NOWYCH zdjęć.

Na zakończenie, TAK, niszczarki pamięci podręcznej, losowe zmienne, zmieniające się adresy URL i sugestie mogą tutaj działać, ale będą wyglądać jak „przerywane voodoo”, jeśli og:typenie zostanie określone poprawnie.

PS: pamiętaj, że CDN lub pamięć podręczna po stronie serwera będzie służyć skrobakowi Facebooka, nawet jeśli "myślisz", że możesz zobaczyć najnowszą wersję. (Nie będę spędzać na tym czasu poza wskazaniem, że zmarnuje to kolosalne ilości twojego czasu, jeśli nie zostanie dwukrotnie sprawdzone).

Christian Žagarskas
źródło
0

Niedawno miałem inny, ale podobny problem z Facebookiem i stwierdziłem, że wspomniana strona skrobaka / debugowania po prostu nie wydaje się czytać żadnej strony w całości. Moje właściwości meta dla Open Graph były dalej w sekcji head, a skrobak ciągle informował mnie, że specyfikacja obrazu jest nieprawidłowa i niezależnie od tego używałby wersji z pamięci podręcznej. Przeniosłem tagi Open Graph dalej w górę w kodzie, blisko samej góry strony, i wtedy wszystko działało idealnie za każdym razem.

PaulScott
źródło