web-dev-qa-db-fra.com

Facebook Open Graph n'efface pas le cache

J'ai des problèmes avec mes balises méta avec Open Graph. Il semblerait que Facebook mette en cache d'anciennes valeurs de mes balises méta. Les anciennes valeurs pour les attributs og:title et og:url sont toujours utilisées, même si je les ai déjà modifiées.

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

Facebook Open Graph lint screenshot

Notez qu'il existe deux valeurs pour og:title et 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 méta (vous pouvez vérifier si vous affichez la source du code 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 cache-t-il og:title et og:url? Est-ce que quelqu'un connaît le même problème?

169
Ardee Aram
  1. Allez à http://developers.facebook.com/tools/debug
  2. Entrez l'URL suivi de 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 hier soir, 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 colonne/l'image de votre serveur. Mais Facebook vous permet d'actualiser en utilisant fbrefresh

J'espère que ça aide.

301
P.C.

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

Ce sont 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 recacher. (Assurez-vous d'utiliser la même URL que celle indiquée sur votre balise og: url)
  3. Cliquez à nouveau sur le bouton Fetch Scrape

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 dans l'en-tête de cette page correspond à celle que vous passez.
  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 de l'image og: reste identique mais que l'image a réellement été modifiée, elle ne sera ni mise à jour ni remise en mémoire par les racleurs de Facebook, même en procédant comme indiqué ci-dessus. (Même en passant un? last_update = [TIMESTAMP] à la fin de l'URL de l'image ne m'a pas fonctionné).
  • La seule solution efficace pour moi a été d'attribuer un nouveau nom à l'image.

Remarque concernant les mises à jour d'images ou de vidéos sur des publications antérieures:

  • Lorsque vous appelez le débogueur pour supprimer les modifications de vos balises og: de votre page, tous les partages Facebook précédents de cette URL continueront d'afficher l'ancienne image/vidéo. Il n'y a aucun moyen de mettre à jour tous les messages précédents et c'est ainsi par conception pour des raisons de sécurité. Sinon, quelqu'un pourrait prétendre qu'un utilisateur partage quelque chose qu'il/elle n'a pas réellement partagé.
79
Oriol Esteban

Si vous avez plusieurs pages et que vous ne voulez 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 oeil à "réponse" dans console.log - vous y trouverez le champ "updated_time" et d'autres informations utiles.

19
Zhorzh Alexandr

La vignette OG ne semble pas s'actualiser, même si vous transmettez la variable fbrefresh. Pour mettre à jour cette information sans attendre l'effacement automatique, vous devez modifier le nom de fichier de la valeur de balise méta associée à la vignette et l'actualiser.

12
Seb

J'ai eu les mêmes problèmes avec og:image, plusieurs tentatives de renommer le fichier ou d'effacer le cache FB n'ont pas fonctionné via le débogueur de facebook ou lors des 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 ayant ce rapport d'aspect, cela semble être faux, la seule chose qui a fonctionné pour moi a été d'utiliser une image avec dimensions carrées.

Edit * Quelques heures, je suis retourné à l’utilisation de 1200 x 630 et cela 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 c'était agréable.

6
Wyck

Fondamentalement, la réponse est la patience;)

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

enter image description here

6
Ardee Aram

Ooook, finalement ça a aidé (j'utilise IP.Board). Ce que je devais faire était:

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

Merci à l'auteur pour ce fil!

EDIT: De plus, vous devez vous rappeler des exigences d’image. Pour le moment (janvier 2013), il s'agit: - d'au moins 200 px dans les deux sens - rapport maximum 3: 1

4
Matt

Nous nous sommes heurtés à ce problème car il se trouvait que nous ne lintignions pas l'URL correcte, car la véritable 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 will remettra en cache votre page, vous n'avez pas à attendre.

4
Ryan Florence

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

4
kbsbng
  1. Visitez la page FB https://developers.facebook.com/tools/debug/og/object/
  2. Entrez votre domaine.
  3. Cliquez sur le bouton "Récupérer les nouvelles informations de scrap"
  4. Terminé
4
Cropis

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

Il n'y a pas de moyen infaillible de mettre à jour le graphique ouvert og: URL de l'image avec le résultat immédiat. Il est mis en cache jusqu'à ce que fb soit mis à jour (toutes les 24 heures)

Voici ce qui a été rapporté par d’autres personnes, mais j’ai eu aucun succès avec aucun d’eux.

  • Choisir "Récupérer de nouvelles informations de scrape"
  • Modification du nom de fichier de l'image réelle et/ou suppression de l'original
  • Ajout d'une chaîne de requête à l'URL de l'image en ajoutant un PHP TIMESTAMP ou?
  • Ajout de la chaîne de requête "... yoursite.com/?fbrefresh=anything" à l'URL d'extraction du débogueur
  • Choix du lien de l’API graphique au bas de la page og dev
  • Choisir de voir exactement ce que le racleur voit - ne semble pas demander des données de scrap en temps réel non mises en cache, il affiche toujours l'URL de l'image 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 lié au cache du navigateur ou à un service de mise en cache. Si la méta-information est à jour dans votre code et que vous avez essayé toutes les solutions ci-dessus (à moins qu'une autre suggestion ne se concrétise), la réponse correcte est , vous ne pouvez rien faire d'autre que d'attendre .

3
Philip Ingram

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

apps.facebook.com/HELLO

est différent aux yeux du linter puis

apps.facebook.com/hello

Veillez à utiliser l'URL exacte du site qui a été entrée dans les paramètres de développement de l'application. Sinon, linter renverra les propriétés mais n'actualisera pas le cache.

3
Justin

Facebook Developer Documents indique que la propriété title a une exception:

Une fois que 50 actions (likes, partages et commentaires) ont été associées à un objet, vous ne pourrez plus mettre à jour son titre.

https://developers.facebook.com/docs/sharing/opengraph/using-objects#update

1
moogoo

J'ai découvert que si votre image fait 72 dpi, cela vous donnera l'erreur de taille. Utilisez 96 dpi à la place. J'espère que cela t'aides.

1
Gordon
  1. Allez à http://developers.facebook.com/tools/debug

  2. Collez dans 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 adresse que Facebook utilise pour la page que vous partagez (exemple: dans Drupal, utilisez le chemin d'accès noeud/* au lieu de l'alias si la page est partagé via cette URL).

  3. Cliquez dans la partie "Aperçu du partage" sur le lien "Voir ceci dans la boîte de dialogue"
1
Hans Rossel

C'est un cache, il est actualisé, c'est ce que le cache est censé faire de temps en temps. Donc, l'attente finira par marcher, mais vous devez parfois le faire plus rapidement. Changer le nom du fichier fonctionne.

0
Srneczek

Vraiment facile à résoudre. 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"

RL d'origine

www.example.com

RL lorsque les balises méta og sont mises à jour:

www.example.com?cacheBuster=1

RL lorsque les balises méta og sont mises à jour à nouveau:

www.example.com?cacheBuster=2

Facebook traitera chacun d'eux comme une nouvelle URL et obtiendra de nouvelles méta données.

0
Will

J'ai eu une expérience similaire. Le lien vers le 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 avions déjà réglé le problème il y a quelques jours, mais nous voyions toujours un 404 en avant-première. Nous avons utilisé l'outil à l'adresse https://developers.facebook.com/tools/debug/ et qui a forcé l'actualisation (il n'a pas été nécessaire d'ajouter de paramètre à ce propos). Dans notre cas, Facebook n'a pas N'actualisez pas la mémoire cache après 24 heures, mais l'outil a permis de la forcer.

0
jawss510

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

La façon dont j'ai réussi à éviter cela consistait à utiliser la méthode de fil, au lieu de partager, puis à renseigner 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'
  });
};
0
Peege151

Pour moi, toutes les solutions ne fonctionnaient pas. J'ai découvert si vous utilisez Wordpress with Yoast SEO alors vous devez actualiser ces deux balises:

<meta property="article:modified_time" content="2017-09-29T00:37:33+02:00" />
<meta property="og:updated_time" content="2017-09-29T00:37:33+02:00" />

Pour actualiser les valeurs, vous devez soumettre toute modification à l'article. Si vous ne changez pas cette date, le cache facebook ne sera pas actualisé.

Vous pouvez également désactiver ces balises supplémentaires en ajoutant des filtres dans functions.php:

add_filter( 'wpseo_og_article_published_time', '__return_false' );
add_filter( 'wpseo_og_article_modified_time', '__return_false' );
add_filter( 'wpseo_og_og_updated_time', '__return_false' );
0
Karol Trybulec