Facebook Open Graph non cancella la cache


174

Sto riscontrando problemi con i miei meta tag con Open Graph. Sembra che Facebook stia memorizzando nella cache vecchi valori dei miei metatag. Vecchi valori per gli attributi og:titlee og:urlsono ancora usati, anche se li ho già cambiati.

Ho eseguito Lint su una pagina del mio sito e questo è apparso:

Schermata lanugine di Facebook Open Graph

Si noti che ci sono due valori per og:titlee og:url, e l'ultimo prevalso. Tuttavia, le ultime due voci sono le VECCHIE voci che ho usato per questo sito. Attualmente sto usando questi meta tag (puoi verificare se visualizzi la fonte dell'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" />

Perché la memorizzazione nella cache di Facebook og:titlee og:url? Qualcuno sta riscontrando lo stesso problema?


Suppongo che sia come una storia? Sto vedendo FB ricevere le ultime novità titlee urlper te (nella tabella delle informazioni) quindi perché preoccuparsi?
ifaour,

Il problema è che il conteggio dei like di Facebook è ancora per OLD og: url ( pinq.dk ) che è di circa 200+, rispetto al conteggio per pinq.dk/tilbud/landsdaekkende/lissy
Ardee Aram

e non penso che questa sia storia. Più di og: url viene (presumibilmente) impostato due volte, l'ultimo è quello che ha prevalso. In qualche modo, i vecchi valori che sono già stati rimossi dal codice incidono ancora sui meta valori.
Ardee Aram,

3
Bene, leggi questo . Soprattutto la sezione Modifica dei meta tag . Non sono sicuro che sia correlato ma potrebbe essere d'aiuto. Lo verificherò più tardi, scusa amico!
ifaour,

2
Questo è probabilmente. "Puoi aggiornare gli attributi della tua pagina aggiornando i tag <meta> della tua pagina. Nota che og: title e og: type sono modificabili solo inizialmente - dopo che la tua pagina riceve 50 like il titolo diventa fisso e dopo che la tua pagina riceve 10.000 like il tipo diventa fisso. Queste proprietà sono fisse per evitare che gli utenti sorprendenti abbiano già apprezzato la pagina. La modifica del titolo o dei tag di tipo dopo che questi limiti sono stati raggiunti non fa nulla, la pagina mantiene il titolo e il tipo originali. ". Grazie ifaour!
Ardee Aram,

Risposte:


304
  1. Vai su http://developers.facebook.com/tools/debug
  2. Inserisci l'URL che segue per fbrefresh=CAN_BE_ANYTHING

Esempi:

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

Ho avuto lo stesso problema la scorsa notte e ho ottenuto questa soluzione da alcuni siti Web.

Facebook salva la miniatura della cache. Non si aggiorna anche se elimini il thumnail / l'immagine dal tuo server. Ma Facebook ti consente di aggiornare utilizzandofbrefresh

Spero che aiuti.


30
param fbrefresh potrebbe non essere necessario in quanto lo strumento di debug aggiorna l'oggetto senza di esso.
alexandru.topliceanu,

7
Non cancella la cache in alcun modo a meno che non si utilizzi questo parametro.
Umur Kontacı,

26
Non vero, l'aggiunta di quel parametro non fa alcuna differenza per il funzionamento dello strumento di debug - non vi è alcun riferimento a quel parametro nello strumento di debug o nel codice dello scraper
Igy

7
Non è necessario utilizzare il parametro fbrefresh, ma è necessario accedere come amministratore per l'app FB che possiede quel dominio, altrimenti la cache non verrà aggiornata.
Felipe Brahm,

3
Posso verificare che l'aggiunta del parametro fbrefresh ha funzionato per me. Se condividevo l'URL, utilizzava i vecchi dati anche se il debugger mostrava i dati corretti. Ma una volta che ho usato il debugger con il parametro fbrefresh, anche le condivisioni normali hanno usato i dati corretti.
Gelato

82

La domanda più votata è abbastanza obsoleta:

Queste sono le uniche 2 opzioni che dovrebbero essere utilizzate a partire da novembre 2014 :

Per i non sviluppatori

  1. Utilizzare il debugger FB: https://developers.facebook.com/tools/debug/og/object
  2. Incolla l'URL che desideri ricache. (Assicurati di utilizzare lo stesso URL incluso nel tag og: url)
  3. Fare di nuovo clic sul pulsante Recupera informazioni sulla raschiatura

Per gli sviluppatori

  1. Effettua una chiamata GET a livello di codice a questo URL: https://graph.facebook.com/?id=[YOUR_URL_HERE[&scrape=true (vedi: https://developers.facebook.com/docs/games_payments/takingpayments#scraping )
  2. Assicurati che il tag og: url incluso nella testa in quella pagina corrisponda a quello che stai passando.
  3. puoi persino analizzare la risposta json per ottenere il numero di condivisioni di quell'URL.

Ulteriori informazioni sull'aggiornamento delle immagini

  • Se l'og: image URL rimane lo stesso ma l'immagine è effettivamente cambiata, non verrà aggiornata né ricollegata dagli scraper di Facebook anche facendo quanto sopra. (anche passando un? last_update = [TIMESTAMP] alla fine dell'URL dell'immagine non ha funzionato per me).
  • L'unica soluzione efficace per me è stata quella di assegnare un nuovo nome all'immagine.

Nota relativa agli aggiornamenti di immagini o video su post precedentemente pubblicati:

  • Quando chiami il debugger per eliminare le modifiche alla tua og: tag della tua pagina, tutte le precedenti condivisioni Facebook di quell'URL mostreranno comunque la vecchia immagine / video. Non è possibile aggiornare tutti i post precedenti ed è così in base alla progettazione per motivi di sicurezza. Altrimenti, qualcuno potrebbe fingere che un utente abbia condiviso qualcosa che in realtà non ha.

Non sembra restituire il numero di condivisioni per la mia pagina. Ho letto in questo post: " stackoverflow.com/questions/3581488/… " che è necessario disporre di un pulsante Mi piace / Condividi di Facebook sulla pagina affinché l'output di questo end-point contenga informazioni.
WillyBurb,

assicurati che i tag siano nella TESTA e non nel CORPO della tua pagina - il debugger ti avvertirà di questo e ma saranno ignorati (sì, lo so che hai menzionato questo, volevo solo sottolineare il punto)
Simon_Weaver

@Oriol Esteban hai trovato altri modi per aggiornare le immagini?
Petr

3
@Oriol Quando di recente ho provato questo ho dovuto postare su questo URL (secondo gli sviluppatori.facebook.com/docs/sharing/opengraph/… )
Glen T

1
Qualche idea su come graffiare la cache quando si cambia l'URL di Og: video ????? Ho fatto una piccola modifica al mio video e ho cambiato l'URL e Facebook continua a mostrare la vecchia versione! Ovviamente ho fatto il graffio nel debug (che mostra correttamente lì) ma non nel post! ... questo mi sta facendo impazzire!
RayOnAir

19

Se hai molte pagine e non vuoi aggiornarle manualmente, puoi farlo automaticamente.

Diciamo che hai una pagina del profilo utente con foto:

$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; ?>"

Basta aggiungere questo alla tua pagina:

// 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");

Questo aggiornerà la cache di Facebook. Se usi la soluzione jQuery, dai un'occhiata a "response" in console.log: troverai il campo "updated_time" e altre informazioni utili.


questa era l'unica soluzione coerente che mi avrebbe rovinato la cache delle immagini. l'utilizzo fbrefreshnon ha fatto nulla per il mio problema.
Hellatan,

Ciao, sto provando questo metodo ma sto riscontrando degli errori, $ this-> output ('<script type = "text / javascript"> $ (document) .ready (function () {$ .post (" graph .facebook.com ", {id:" '. $ this-> content [' canonical '].' ", scrape: true}, function (response) {console.log (response);});}); < / script> ');
monsterboy,

Ricevo il seguente errore Uncaught ReferenceError: $ non definito (funzione anonima) qualsiasi aiuto sarebbe molto apprezzato :)
monsterboy,

@monsterboy $ - questa è una scorciatoia per la funzione jQuery. $ .post () è uguale a jQuery.post () Per utilizzare questa libreria devi prima importarla: <script src = " code.jquery.com/jquery-latest.min.js " type = "text / javascript "> </script>
Zhorzh Alexandr

@ZhorzhAlexandr thx per la tua risposta ma sto usando WordPress e ho un post che potrebbe essere modificato ogni giorno, quindi come potrei usare questo script ogni volta prima di condividere?
Antwan,

12

La miniatura OG non sembra aggiornarsi anche se passa la variabile fbrefresh. Per aggiornare questo senza attendere la cancellazione automatica dovrai cambiare il nome del file del valore del meta tag associato alla miniatura e aggiornarlo.


Secondo le altre risposte, è possibile forzare un aggiornamento utilizzando il fbrefreshparametro URL.
Sam Mussmann,

1
@SamMussmann Sembra solo questo (se lo fa) che aggiorna la cache del contenuto del tag OG e NON l'immagine reale trovata dall'URL di tali contenuti. Ad esempio: mantieni i tag OG uguali, ma cambi il file di immagine (mantenendo lo stesso nome) e l'immagine stessa rimarrà nella cache. Non ho trovato alcun modo per cancellare questo a parte, come diceva Seb, è necessario modificare il nome file dell'immagine.
Nick M,

@ Nick M Hai trovato altre soluzioni?
Petr

Risolto. Ho risolto aggiungendo? T = TIMESTAMP al mio URL immagine nello script php, dove generiamo i tag. Per ora funziona.
Petr

Ho appena provato a rinominare il file di immagine e aggiornato il valore del meta tag, non funzionando troppo.
Antonio Ooi,

7

Ho avuto gli stessi problemi usando og:image, diversi tentativi di rinominare il file o cancellare la cache FB non ha funzionato né tramite il debugger di Facebook o test tramite un account reale.

Le nuove linee guida di Facebook affermano che la dimensione dell'immagine dovrebbe essere di 1200 x 630 o con quel rapporto di aspetto, questo sembra essere sbagliato, l'unica cosa che ha funzionato per me è stata usare un'immagine con dimensioni quadrate .

Modifica * Alcune ore sono tornato a utilizzare 1200 x 630 e funzionava magicamente, era magico.

Ho anche rinominato i file in f * ^ * kfacebook.jpg, non sono sicuro che abbia aiutato, ma mi sono sentito bene.


6

Fondamentalmente, la risposta è pazienza;)

Ho controllato la Linter stamattina e og: title e og: url vengono visualizzati correttamente, senza valori ridondanti. Immagino che FaceBook svuota automaticamente la sua cache ad un intervallo specifico. Devo solo aspettare.

inserisci qui la descrizione dell'immagine


Da facebook per gli sviluppatori , la cache degli oggetti scade ogni 7 giorni e Facebook ridimensionerà automaticamente l'oggetto al successivo utilizzo.
Venugopal,

4

Ci siamo appena imbattuti in questo, a quanto pare, non stavamo accennando all'URL giusto, poiché l'URL reale aveva una stringa di query (duh, pagina diversa per quanto riguarda un bot).

http://example.com/

! ==

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

Il linter sarà nuovamente nella cache la tua pagina, non c'è bisogno di aspettare.



4

Ooook, finalmente mi ha aiutato (uso IP.Board). Quello che dovevo fare era:

  1. Modifica URL di og: immagine sul mio sito Web (configurazione generale).
  2. Prova questo metodo con? Fbrefresh = 1154464gd56

Grazie all'autore per questa discussione!

EDIT: Cosa c'è di più che devi ricordare sui requisiti delle immagini. Per ora (gennaio 2013) è: - almeno 200 px in entrambe le direzioni - rapporto massimo 3: 1



3

Una cosa da aggiungere, l'url è case sensitive . Nota che:

apps.facebook.com/ CIAO

è diverso agli occhi della linter allora

apps.facebook.com/ ciao

Assicurati di utilizzare l'URL del sito esatto che è stato inserito nelle impostazioni dello sviluppatore per l'app. La linter restituirà le proprietà altrimenti, ma non aggiornerà la cache.


3

Mi dispiace gente, ma la risposta corretta è:

Non esiste un modo infallibile per aggiornare il grafico aperto og: image url con risultato immediato. Viene memorizzato nella cache fino a quando non viene aggiornato l'FB (secondo quanto riferito ogni 24 ore)

Qui ci sono cose che sono state segnalate per funzionare da altri, ma ho avuto successo ZERO con nessuno di loro.

  • Scegliere "Recupera nuove informazioni di raschiatura"
  • Modifica del nome file dell'immagine attuale e / o eliminazione dell'originale
  • Aggiunta di una stringa di query all'URL dell'immagine aggiungendo un TIMESTAMP PHP o qualcosa del genere
  • Aggiunta della stringa di query "... yoursite.com/?fbrefresh=anything" all'URL di recupero del debugger
  • Scelta del collegamento API grafico nella parte inferiore della pagina di sviluppo di og
  • Scegliendo di vedere esattamente cosa vede lo scraper - non sembra richiedere dati di scrape non memorizzati nella cache in tempo reale, mostra comunque l'URL dell'immagine nella cache anche se il file non esiste più

L'ispezione del codice è sempre un modo per confermare che non è un problema con la cache del browser o alcuni servizi di memorizzazione nella cache. Se le meta informazioni sono aggiornate nel tuo codice e hai provato tutto quanto sopra (a meno che non venga realizzato un altro suggerimento), la risposta corretta è che non puoi fare altro che attendere .


1

Ho scoperto che se la tua immagine è di 72 dpi ti darà l'errore di dimensione dell'immagine. Utilizzare invece 96 dpi. Spero che questo ti aiuti.


1
  1. Vai su http://developers.facebook.com/tools/debug

  2. Incolla l'URL della pagina e fai clic su debug. Se il tuo sito utilizza alias URL, assicurati di utilizzare lo stesso URL utilizzato da Facebook per la pagina che stai condividendo (esempio: in Drupal usa il percorso node / * anziché l'alias se la pagina è condivisa tramite quell'URL).

  3. Fai clic sulla parte "Anteprima di condivisione" su "Visualizza questo nella finestra di dialogo di condivisione"

Soluzione migliore! Grazie
MeV


0

Ha avuto un'esperienza simile. Il link al sito Web mostrava un 404 nell'anteprima generata da Facebook. Viene fuori l'og: i metadati dell'URL erano sbagliati. Lo avevamo già risolto alcuni giorni fa, ma vedevamo ancora un 404 sull'anteprima. Abbiamo utilizzato lo strumento su https://developers.facebook.com/tools/debug/ e questo ha forzato l'aggiornamento (non è stato necessario aggiungere alcun parametro tra l'altro) Nel nostro caso, Facebook non ha aggiornato la cache dopo 24 ore ma lo strumento ha contribuito a forzarlo.


0

È una cache, spesso si aggiorna, questo è ciò che la cache deve fare una volta ogni tanto. Quindi l'attesa alla fine funzionerà, ma a volte è necessario farlo più velocemente. La modifica del nome file funziona.


Quindi perché -1? Letteralmente nessuno ha risposto alla soluzione più semplice per CAMBIARE IL FILENAME e in realtà non funziona come le altre (+/- 5) risposte votate che non lo fanno o almeno che hanno fatto ma che sono obsolete. Se non riesci a cambiare il nome del file per qualche motivo, questa risposta non ti aiuterà.
Srneczek,

0

Ho avuto anche questo problema. Il raschietto mostra le informazioni giuste, ma l'URL di condivisione era ancora popolato con vecchi dati.

Il modo in cui mi sono comportato è stato quello di utilizzare il metodo feed, anziché la condivisione, quindi popolare i dati manualmente (che non è esposto con il metodo share)

Qualcosa come questo:

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'
  });
};

0

Risolverlo davvero facile. Testato e funzionante. Devi solo generare un nuovo URL quando aggiorni i metatag. È semplice come aggiungere un "& cacheBuster = 1" al tuo URL. Se modifichi i meta tag, incrementa semplicemente "& cacheBuster = 2"

URL originale

www.example.com

URL quando vengono aggiornati i meta tag og:

www.example.com?cacheBuster=1

URL quando i meta tag og vengono nuovamente aggiornati:

www.example.com?cacheBuster=2

Facebook tratterà ciascuno come un nuovo url e otterrà nuovi metadati.


0

Anni dopo e questo è ancora un problema comune, ma non è sempre nella cache di Facebook: è spesso un errore umano (permettimi di elaborare)

OG: TYPE influisce sulla raschiatura dell'immagine:

  1. https://ogp.me/#type_article non è lo stesso di https://ogp.me/#type_website

Tieni presente che og: type = website farà sì che qualsiasi / sottopagina / di quell'URL diventi "canonica". Ciò significa che avrai difficoltà a far aggiornare le tue immagini utilizzando lo scraper, qualunque cosa tu faccia.

Considera questo "presupposto ed errore comune"

- <meta property="og:type" content="website" />=> https://www.example.org (genitore)
- <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/e/child-2/ erediterà il fileog:image il genitore

Quelli non sono "tutti i siti Web", 1 è un sito Web, gli altri sono articoli.

Se lo fai, Facebook penserà che tutti questi sono canonici e metterà la PRIMA og: immagine in tutti loro. (provalo, vedrai) - se imposti og: url come dominio principale o principale hai detto a Facebook che sono tutti canonici. (c'è una buona ragione per questo, ma è fuori tema)

Considera questa soluzione (che è ciò che la maggior parte della gente "vuole davvero")

- <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/

Se lo fai ora, Facebook ti darà molti meno problemi con lo scrap delle tue NUOVE immagini.

In chiusura, SÌ, i buster della cache, i var casuali, gli URL di modifica e i suggerimenti qui possono funzionare, ma sembreranno "voodoo intermittenti" se og:typenon sono specificati correttamente.

PS: ricorda che una CDN o una cache sul server serviranno allo scraper di Facebook anche se "pensi" di poter vedere la versione più recente. (Non trascorrerò altro tempo su questo se non per sottolineare che sprecherà quantità colossali del tuo tempo se non ricontrollato.)


0

Di recente ho avuto un problema diverso, ma simile a Facebook, e ho scoperto che la pagina di scraper / debug menzionata semplicemente non sembra leggere alcuna pagina nella sua interezza. Le mie meta-proprietà per Open Graph erano più in basso nella sezione head e lo scraper mi informava costantemente che la specifica dell'immagine non era corretta e che utilizzava una versione memorizzata nella cache. Ho spostato i tag Open Graph più in alto nel codice, vicino alla cima della pagina, e poi tutto ha funzionato perfettamente, ogni volta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.