176 votes

L'Open Graph de Facebook ne vide pas le cache

J'ai des problèmes avec mes balises méta avec Open Graph. Il semble que Facebook mette en mémoire les anciennes valeurs de mes métabalises. Anciennes valeurs pour les attributs og:title y og:url sont toujours utilisés, même si je les ai déjà modifiés.

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

Facebook Open Graph lint screenshot

Remarquez qu'il y a deux valeurs pour og:title y og:url et le dernier l'a emporté. Cependant, Les deux dernières entrées sont les anciennes entrées que j'ai utilisé pour ce site. J'utilise actuellement ces métabalises (vous pouvez vérifier si vous regardez 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:title y og:url ? Quelqu'un connaît-il le même problème ?

0 votes

Je suppose que c'est une sorte d'histoire ? Je vois que FB reçoit les dernières title y url pour vous (dans le tableau d'information), alors pourquoi se donner la peine ?

0 votes

Le problème est que le nombre de "Like" sur facebook est toujours pour l'ancienne og:url ( pinq.dk ) qui est d'environ 200+, par opposition au comptage pour les pinq.dk/tilbud/landsdaekkende/lissy

0 votes

Et je ne pense pas que ce soit de l'histoire ancienne. C'est plutôt og:url qui a été (soi-disant) défini deux fois, la dernière étant celle qui a prévalu. D'une manière ou d'une autre, les anciennes valeurs qui ont déjà été supprimées du code affectent toujours les méta-valeurs.

309voto

P.C. Points 2137
  1. Aller à http://developers.facebook.com/tools/debug
  2. Entrez l'URL en suivant 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 trouvé cette solution sur un site web.

Facebook enregistre la vignette de votre cache. Elle ne sera pas rafraîchie même si vous supprimez la vignette/l'image de votre serveur. Mais Facebook vous permet de l'actualiser en utilisant fbrefresh

J'espère que cela vous aidera.

30 votes

Param fbrefresh peut ne pas être nécessaire car l'outil de débogage rafraîchit l'objet sans elle.

7 votes

Il ne vide absolument pas le cache, sauf si vous utilisez ce paramètre.

27 votes

Faux. L'ajout de ce paramètre ne change rien au fonctionnement de l'outil de débogage - il n'y a aucune référence à ce paramètre dans le code de l'outil de débogage ou du scraper.

19voto

Zhorzh Alexandr Points 66

Si vous avez beaucoup de pages et que vous ne voulez pas les rafraîchir manuellement, vous pouvez le faire automatiquement.

Disons que vous avez une page de profil d'utilisateur avec une 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; ?>"

Il suffit d'ajouter 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 va rafraîchir le cache de 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.

0 votes

C'est la seule solution cohérente qui m'a permis de supprimer le cache des images. fbrefresh n'a rien fait pour mon problème.

0 votes

Bonjour, j'essaie cette méthode mais j'obtiens quelques 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> ') ;

0 votes

J'obtiens l'erreur suivante Uncaught ReferenceError : $ is not defined (anonymous function) toute aide serait très appréciée :)

12voto

Seb Points 71

La vignette OG ne semble pas se rafraîchir même en passant la variable fbrefresh. Pour mettre à jour cette dernière sans attendre le rafraîchissement automatique, vous devrez modifier le nom de fichier de la valeur de la balise méta associée à la vignette et rafraîchir.

0 votes

Selon les autres réponses, vous pouvez forcer un rafraîchissement en utilisant la fonction fbrefresh Paramètre URL.

1 votes

@SamMussmann Il semble que cela rafraîchisse seulement (si cela le fait) le cache du contenu des balises OG, et PAS l'image réelle trouvée à partir de l'URL de ce contenu. Par exemple, vous gardez les mêmes balises OG, 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 d'effacer cela, à part, comme Seb l'a dit, de changer le nom du fichier image.

0 votes

@Nick M Avez-vous trouvé d'autres solutions ?

6voto

azure_ardee Points 941

En gros, 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 vide automatiquement son cache à un certain intervalle. Il ne me reste plus qu'à attendre.

enter image description here

0 votes

Desde facebook pour les développeurs , Le cache de l'objet expire tous les 7 jours, et Facebook récupère automatiquement l'objet lors de sa prochaine utilisation.

4voto

kbsbng Points 365

Oui, facebook vide automatiquement le cache toutes les 24 heures : En fait, facebook récupère les pages et met à jour le cache toutes les 24 heures. https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo .

0 votes

Selon la documentation actuelle, la durée du cache est de 30 jours.

1 votes

Lien mis à jour pour cette info - développeurs.facebook.com/docs/plugins/faqs - vous pouvez le régler pour qu'il gratte plus souvent

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X