Facebook Open Graph ne vide pas le cache

174

J'ai des problèmes avec mes balises méta avec Open Graph. Il semble que Facebook met en cache les anciennes valeurs de mes balises meta. Anciennes valeurs pour les attributs og:titleet og:urlsont toujours utilisées, même si je les ai déjà modifiées.

J'ai lancé Lint sur une page de mon site , et ceci est apparu:

Capture d'écran de Facebook Open Graph lint

Notez qu'il existe deux valeurs pour og:titleet og:url, et la dernière a prévalu. Cependant, les deux dernières entrées sont les ANCIENNES entrées que j'ai utilisées pour ce site. J'utilise actuellement ces balises meta (vous pouvez vérifier si vous affichez la source du 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" />

Pourquoi Facebook met-il en cache og:titleet og:url? Quelqu'un rencontre-t-il le même problème?

Ardee Aram
la source
Je suppose que c'est comme une histoire? Je vois FB obtenir la dernière version titleet urlpour vous (dans le tableau d'informations) alors pourquoi s'embêter?
ifaour
Le problème est que le compte Facebook Like est toujours pour le OLD og: url ( pinq.dk ) qui est d'environ 200+, par opposition à compter pour pinq.dk/tilbud/landsdaekkende/lissy
Ardee Aram
et je ne pense pas que ce soit l'histoire. Plus de og: url étant (supposément) défini deux fois, le dernier étant celui qui prévalait. D'une manière ou d'une autre, les anciennes valeurs déjà supprimées du code affectent toujours les méta-valeurs.
Ardee Aram
3
Eh bien, lisez ceci . Surtout la section Modification des balises Meta . Je ne sais pas si c'est lié, mais cela peut aider. Je vérifierai cela plus tard, désolé mon pote!
ifaour
2
C'est probablement ça. "Vous pouvez mettre à jour les attributs de votre page en mettant à jour les balises <meta> de votre page. Notez que og: title et og: type ne sont modifiables qu'au départ - une fois que votre page a reçu 50 mentions J'aime, le titre est corrigé et après que votre page a reçu 10000 mentions J'aime le type devient fixe. Ces propriétés sont corrigées pour éviter de surprendre les utilisateurs qui ont déjà aimé la page. Changer le titre ou les balises de type une fois ces limites atteintes ne fait rien, votre page conserve le titre et le type d'origine. ". Merci ifaour!
Ardee Aram

Réponses:

304
  1. Allez sur http://developers.facebook.com/tools/debug
  2. Entrez l'URL suivant par fbrefresh=CAN_BE_ANYTHING

Exemples:

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

J'avais le même problème la nuit dernière et j'ai obtenu cette solution sur un site Web.

Facebook enregistre votre vignette de cache. Il ne s'actualisera pas même si vous supprimez la vignette / l'image de votre serveur. Mais Facebook vous permet de vous rafraîchir en utilisantfbrefresh

J'espère que ça aide.

PC
la source
30
param fbrefresh peut ne pas être nécessaire car l'outil de débogage actualise l'objet sans lui.
alexandru.topliceanu
7
Il ne vide pas du tout le cache, sauf si vous utilisez ce paramètre.
Umur Kontacı
26
Faux, l'ajout de ce paramètre ne fait aucune différence pour le fonctionnement de l'outil de débogage - il n'y a aucune référence à ce paramètre dans l'outil de débogage ou le code de racleur
Igy
7
Il n'est pas nécessaire d'utiliser le paramètre fbrefresh, mais vous devez être connecté en tant qu'administrateur pour l'application FB qui possède ce domaine, sinon le cache ne sera pas mis à jour.
Felipe Brahm
3
Je peux vérifier que l'ajout du paramètre fbrefresh a fonctionné pour moi. Si je partageais l'URL, il utilisait d'anciennes données même si le débogueur affichait les données correctes. Mais une fois que j'ai utilisé le débogueur avec le paramètre fbrefresh, même les partages normaux utilisaient les données correctes.
crème glacée
82

La question la plus votée est assez dépassée:

Voici les 2 seules options qui devraient être utilisées à partir de novembre 2014 :

Pour les non développeurs

  1. Utilisez le débogueur FB: https://developers.facebook.com/tools/debug/og/object
  2. Collez l'URL que vous souhaitez remettre en cache. (Assurez-vous d'utiliser la même URL incluse dans votre balise og: url)
  3. Cliquez à nouveau sur le bouton Extraire les informations de raclage

Pour les développeurs

  1. Passez un appel GET par programme à cette URL: https://graph.facebook.com/?id= [ YOUR_URL_HERE[ ] & scrape=true (voir: https://developers.facebook.com/docs/games_payments/takingpayments#scraping )
  2. Assurez-vous que la balise og: url incluse sur la tête de cette page correspond à celle que vous transmettez.
  3. vous pouvez même analyser la réponse json pour obtenir le nombre de partages de cette URL.

Informations supplémentaires sur la mise à jour des images

  • Si l'URL og: image reste la même mais que l'image a en fait changé, elle ne sera pas mise à jour ni récupérée par les scrapers Facebook, même en faisant ce qui précède. (même passer un? last_update = [TIMESTAMP] à la fin de l'url de l'image n'a pas fonctionné pour moi).
  • La seule solution de contournement efficace pour moi a été d'attribuer un nouveau nom à l'image.

Remarque concernant les mises à jour d'images ou de vidéos sur les publications précédemment publiées:

  • Lorsque vous appelez le débogueur pour supprimer les modifications sur vos balises og: de votre page, tous les précédents partages Facebook de cette URL afficheront toujours l'ancienne image / vidéo. Il n'y a aucun moyen de mettre à jour tous les messages précédents et c'est de cette façon par conception pour des raisons de sécurité. Sinon, quelqu'un pourrait prétendre qu'un utilisateur a partagé quelque chose qu'il n'a pas réellement fait.
Oriol Esteban
la source
Il ne semble pas renvoyer le nombre de partages pour ma page. J'ai lu dans ce post: " stackoverflow.com/questions/3581488/… " que vous devez avoir un bouton Facebook comme / partager sur la page pour que la sortie de ce point final contienne des informations.
WillyBurb
assurez-vous que les balises sont dans la tête et non dans le corps de votre page - le débogueur vous en avertira et mais elles seront ignorées (oui je sais que vous l'avez mentionné, je voulais juste insister sur le point)
Simon_Weaver
@Oriol Esteban avez-vous trouvé d'autres moyens de mettre à jour les images?
Petr
3
@Oriol Quand j'ai récemment essayé cela, j'ai dû POSTER sur cette URL (selon developer.facebook.com/docs/sharing/opengraph/… )
Glen T
1
Des idées sur la façon de rayer le cache lors de la modification de l'url de og: video ????? J'ai fait une petite modification de ma vidéo et changé l'URL, et Facebook continue d'afficher l'ancienne version! J'ai évidemment fait le scratch en debug (et ça se voit bien là) mais pas dans le post! ... Ça me rend fou!
RayOnAir
19

Si vous avez de nombreuses pages et que vous ne souhaitez pas les actualiser manuellement, vous pouvez le faire automatiquement.

Disons que vous avez une page de profil utilisateur avec photo:

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

Ajoutez simplement ceci à votre page:

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

Cela actualisera le cache Facebook. Si vous utilisez la solution jQuery, jetez un œil à "response" dans console.log - vous y trouverez le champ "updated_time" et d'autres informations utiles.

Zhorzh Alexandr
la source
c'était la seule solution cohérente qui ferait exploser le cache d'image pour moi. l'utilisation fbrefreshn'a rien fait pour mon problème.
hellatan
Salut, j'essaye cette méthode mais j'obtiens des erreurs, $ 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
J'obtiens l'erreur suivante Uncaught ReferenceError: $ n'est pas défini (fonction anonyme) toute aide serait très appréciée :)
monsterboy
@monsterboy $ - c'est un raccourci vers la fonction jQuery. $ .post () est identique à jQuery.post () Pour utiliser cette bibliothèque, vous devez d'abord l'importer: <script src = " code.jquery.com/jquery-latest.min.js " type = "text / javascript "> </script>
Zhorzh Alexandr
@ZhorzhAlexandr merci pour votre réponse mais j'utilise wordpress et j'ai un article qui pourrait être édité tous les jours, comment puis-je utiliser ce script à chaque fois avant de le partager?
Antwan
12

La vignette OG ne semble pas s'actualiser même si elle passe la variable fbrefresh. Pour mettre à jour cela sans attendre la suppression automatique, vous devrez modifier le nom de fichier de la valeur de la balise Meta associée à la vignette et actualiser.

Seb
la source
Selon les autres réponses, vous pouvez forcer une actualisation à l'aide du fbrefreshparamètre URL.
Sam Mussmann
1
@SamMussmann Il semble que cela seulement (si c'est le cas) rafraîchit le cache du contenu de la balise OG, et PAS l'image réelle trouvée à partir de l'URL dudit contenu. EG: Vous gardez les balises OG identiques, mais changez le fichier image (en gardant le même nom) et l'image elle-même restera dans le cache. Je n'ai trouvé aucun moyen de supprimer cela à part, comme Seb l'a dit, vous devez changer le nom du fichier image.
Nick M
@Nick M Avez-vous trouvé d'autres solutions?
Petr
Résolu. Je l'ai résolu en ajoutant? T = TIMESTAMP à mon URL d'image dans un script php, où nous générons des balises. Pour l'instant ça marche.
Petr
J'ai juste essayé de renommer le fichier image et mis à jour la valeur de la balise meta, ne fonctionnant pas trop.
Antonio Ooi
7

J'ai eu les mêmes problèmes en utilisant og:image, plusieurs tentatives pour renommer le fichier ou effacer le cache FB ne fonctionnaient pas via le débogueur facebook ou les tests via un compte réel.

Les nouvelles directives de Facebook indiquent que la taille de l'image doit être de 1200 x 630 ou avoir ce rapport d'aspect, cela semble être faux, la seule chose qui a fonctionné pour moi était d'utiliser une image de dimensions carrées .

Edit * Quelques heures je suis retourné pour utiliser 1200 x 630 et ça a fonctionné comme par magie, c'était magique.

J'ai également renommé les fichiers en f * ^ * kfacebook.jpg, je ne suis pas sûr que cela ait aidé mais cela me faisait du bien.

Wyck
la source
6

Fondamentalement, la réponse est la patience;)

J'ai vérifié le Linter ce matin, et og: title et og: url s'affichent correctement, sans les valeurs redondantes. Je suppose que FaceBook efface automatiquement son cache à un intervalle spécifique. Je dois juste attendre.

entrez la description de l'image ici

Ardee Aram
la source
Depuis Facebook pour les développeurs , le cache d'objets expire tous les 7 jours et Facebook rescrape automatiquement l'objet lors de sa prochaine utilisation.
Venugopal
4

Nous venons de rencontrer ceci, car il s'avère que nous ne lintions pas la bonne URL, car la vraie URL avait une chaîne de requête (duh, page différente en ce qui concerne un bot).

http://example.com/

! ==

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

Le linter remettra en cache votre page, vous n'avez pas à attendre.

Ryan Florence
la source
4

Oui, Facebook efface automatiquement le cache toutes les 24 heures: en fait, Facebook gratte les pages et met à jour le cache toutes les 24 heures https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo .

kbsbng
la source
Selon la documentation actuelle, la durée du cache est de 30 jours.
patrickhawley
1
lien mis à jour pour cette information - developer.facebook.com/docs/plugins/faqs - vous pouvez le configurer pour gratter plus souvent
Mousey
4

Ooook, enfin ça a aidé (j'utilise IP.Board). Ce que j'avais à faire était:

  1. Changer l'url de og: image sur mon site (configuration générale).
  2. Essayez cette méthode avec? Fbrefresh = 1154464gd56

Merci à l'auteur pour ce fil!

EDIT: De plus, vous devez vous souvenir des exigences en matière d'image. Pour l'instant (janvier 2013) c'est: - au moins 200 px dans les deux sens - rapport maximum 3: 1

Mat
la source
3

Une chose à ajouter, l'url est sensible à la casse . Notez que:

apps.facebook.com/ BONJOUR

est différent aux yeux du linter alors

apps.facebook.com/ bonjour

Assurez-vous d'utiliser l'URL exacte du site qui a été saisie dans les paramètres du développeur de l'application. Sinon, le linter renverra les propriétés mais n'actualisera pas le cache.

Justin
la source
3

Je suis désolé, mais la bonne réponse est:

Il n'y a pas de moyen infaillible de mettre à jour l'url du graphique ouvert og: image avec un résultat immédiat. Il est mis en cache jusqu'aux mises à jour fb (toutes les 24 heures)

Voici des choses qui ont été signalées comme fonctionnant par d'autres, mais je n'ai eu aucun succès avec l'une d'entre elles.

  • Choisir "Récupérer de nouvelles informations de scrape"
  • Modification du nom de fichier réel de l'image et / ou suppression de l'original
  • Ajouter une chaîne de requête à l'url de l'image en ajoutant un PHP TIMESTAMP ou quelque chose?
  • Ajout de la chaîne de requête "... yoursite.com/?fbrefresh=anything" à l'URL de récupération du débogueur
  • Choisir le lien de l'API graphique en bas de la page de développement og
  • Choisir de voir exactement ce que voit le grattoir - ne semble pas demander de données de grattage non mises en cache en temps réel, il affiche toujours l'URL de l'image mise en cache même si le fichier n'existe plus

L'inspection de votre code est toujours un moyen de confirmer qu'il ne s'agit pas d'un problème avec le cache du navigateur ou un service de mise en cache. Si les méta-informations sont à jour dans votre code et que vous avez essayé tout ce qui précède (à moins qu'une autre suggestion ne se concrétise), la bonne réponse est que vous ne pouvez rien faire d'autre que d'attendre .

Philippe Ingram
la source
1

J'ai découvert que si votre image est de 72 dpi, cela vous donnera une erreur de taille d'image. Utilisez plutôt 96 dpi. J'espère que cela t'aides.

Gordon
la source
1
  1. Allez sur http://developers.facebook.com/tools/debug

  2. Collez l'url de la page et cliquez sur déboguer. Si votre site utilise des alias d'url, assurez-vous que vous utilisez la même url que Facebook utilise pour la page que vous partagez (exemple: dans Drupal, utilisez le chemin node / * au lieu de l'alias si la page est partagée via cette URL).

  3. Cliquez dans la partie "Aperçu du partage" sur le lien "Voir ceci dans la boîte de dialogue de partage"
Hans Rossel
la source
Meilleure solution! Merci
MeV
0

J'ai eu une expérience similaire. Le lien du site Web montrait un 404 dans l'aperçu généré par Facebook. Il s'avère que les métadonnées og: url étaient incorrectes. Nous l'avions déjà corrigé il y a quelques jours, mais nous voyions toujours un 404 sur l'aperçu. Nous avons utilisé l'outil sur https://developers.facebook.com/tools/debug/ et cela a forcé l'actualisation (nous n'avons pas eu à ajouter de paramètres au fait) Dans notre cas, Facebook n'a pas actualisé le cache après 24 heures. heures mais l'outil a aidé à le forcer.

mâchoires510
la source
0

C'est un cache, souvent il se rafraîchit, c'est ce que le cache doit faire de temps en temps. Donc, attendre finira par fonctionner, mais parfois vous devez le faire plus rapidement. Changer le nom de fichier fonctionne.

Srneczek
la source
Alors pourquoi -1? Personne n'a répondu à la solution la plus simple de CHANGER LE NOM DE FICHIER et cela ne fonctionne pas comme les autres (+/- 5) réponses votées qui ne le font pas ou du moins elles l'ont fait mais sont obsolètes. Ofc si vous ne pouvez pas changer le nom de fichier pour une raison quelconque, cette réponse ne vous aidera pas.
Srneczek
0

J'avais ce problème aussi. Le grattoir affiche les bonnes informations, mais l'URL de partage était toujours remplie d'anciennes données.

La façon dont j'ai contourné cela était d'utiliser la méthode d'alimentation, au lieu de partager, puis de remplir les données manuellement (ce qui n'est pas exposé avec la méthode de partage)

Quelque chose comme ça:

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
la source
0

Résoudre vraiment facile. Testé et fonctionnel. Il vous suffit de générer une nouvelle URL lorsque vous mettez à jour vos balises meta. C'est aussi simple que d'ajouter un "& cacheBuster = 1" à votre URL. Si vous modifiez les balises meta, incrémentez simplement le "& cacheBuster = 2"

URL d'origine

www.example.com

URL lorsque les balises meta og sont mises à jour:

www.example.com?cacheBuster=1

URL lorsque les balises meta og sont à nouveau mises à jour:

www.example.com?cacheBuster=2

Facebook traitera chacun comme une nouvelle URL et obtiendra de nouvelles métadonnées.

Volonté
la source
0

Des années plus tard et c'est toujours un problème courant, mais ce n'est pas toujours le cache de Facebook: c'est très souvent une erreur humaine (permettez-moi d'élaborer)

OG: TYPE affecte votre éraflure d'image:

  1. https://ogp.me/#type_article différent de https://ogp.me/#type_website

Sachez que og: type = website rendra toute / sous-page / de cette URL "canonique". Cela signifie que vous aurez du mal à mettre à jour vos images à l'aide du grattoir, peu importe ce que vous faites.

Considérez cette "hypothèse et erreur commune"

- <meta property="og:type" content="website" />=> https://www.example.org (parent)
- <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/et /child-2/héritera de la og:imagedu parent

Ce ne sont pas "tous les sites Web", 1 est un site Web, les autres sont des articles.

Si vous faites cela, Facebook pensera que tout cela est canonique et il mettra le PREMIER og: image dans chacun d'eux. (essayez-le, vous verrez) - si vous définissez l'og: url comme votre domaine racine ou parent, vous avez dit à Facebook qu'ils sont tous canoniques. (il y a une bonne raison à cela, mais c'est hors sujet)

Considérez cette solution (qui est ce que la plupart des gens «veulent vraiment»)

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

Si vous faites cela maintenant, Facebook vous donnera beaucoup moins de problèmes pour gratter vos NOUVELLES images.

En terminant, OUI, les contournements de cache, les variables aléatoires, la modification des URL et des suggestions ici peuvent fonctionner, mais ils ressembleront à du "vaudou intermittent" si le og:typen'est pas spécifié correctement.

PS: rappelez-vous qu'un CDN ou un cache côté serveur servira au racleur de Facebook même si vous "pensez" pouvoir voir la version la plus récente. (Je ne passerai pas de temps là-dessus, sauf pour souligner que cela vous fera perdre énormément de temps s'il n'est pas vérifié.)

Christian Žagarskas
la source
0

J'ai eu un problème différent, mais similaire avec Facebook récemment, et j'ai constaté que la page de raclage / débogage mentionnée ne semble tout simplement pas lire une page dans son intégralité. Mes méta propriétés pour Open Graph étaient plus bas dans la section head, et le grattoir m'informait constamment que la spécification de l'image n'était pas correcte et utiliserait une version mise en cache malgré tout. J'ai déplacé les balises Open Graph plus haut dans le code, tout en haut de la page, puis tout fonctionnait parfaitement, à chaque fois.

PaulScott
la source