web-dev-qa-db-ja.com

Facebook Open Graphがキャッシュをクリアしない

Open Graphでメタタグに問題があります。 Facebookは私のメタタグの古い値をキャッシュしているようです。属性og:titleおよびog:urlの古い値は、既に変更していますが、まだ使用されています。

私のサイトのページ でLintを実行すると、これが表示されました:

Facebook Open Graph lint screenshot

og:titleog:urlには2つの値があり、最後の値が優先されることに注意してください。ただし、最後の2つのエントリは、このサイトで使用したOLDエントリです。現在、これらのメタタグを使用しています(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" />

Facebookがog:titleog:urlをキャッシュするのはなぜですか?誰も同じ問題を経験していますか?

166
Ardee Aram
  1. http://developers.facebook.com/tools/debugに移動します
  2. fbrefresh=CAN_BE_ANYTHINGの後にURLを入力します

例:

  1. http://www.example.com?fbrefresh=CAN_BE_ANYTHING
  2. http://www.example.com?postid=1234&fbrefresh=CAN_BE_ANYTHING
  3. または訪問:http://developers.facebook.com/tools/debug/og/object?q=http://www.example.com/?p=3568&fbrefresh=89127348912

私は昨夜同じ問題を抱えていましたが、この解決策をいくつかのウェブサイトから入手しました。

Facebookはキャッシュのサムネイルを保存します。サーバーからthumnail/imageを削除しても更新されません。ただし、Facebookではfbrefreshを使用して更新できます

これがお役に立てば幸いです。

299
P.C.

最も投票された質問はかなり時代遅れです。

これらは、2014年11月の時点で使用すべき2つのオプションです:

非開発者向け

  1. FBデバッガーを使用します: https://developers.facebook.com/tools/debug/og/object
  2. 再キャッシュするURLを貼り付けます。 (必ずog:urlタグに含まれているのと同じURLを使用してください)
  3. [取得情報を再度取得]ボタンをクリックします

開発者向け

  1. 次のURLに対してプログラムでGET呼び出しを行います。 https://graph.facebook.com/?id= [YOUR_URL_HERE]&scrape = true (参照: https://developers.facebook。 com/docs/games_payments/takingpayments#scraping
  2. そのページのヘッドに含まれているog:urlタグが、渡したものと一致することを確認してください。
  3. jSON応答を解析して、そのURLの共有数を取得することもできます。

イメージの更新に関する追加情報

  • Og:image URLが同じままであるが、画像が実際に変更されている場合、Facebookスクレーパーは上記を実行しても更新も再キャッシュもされません。 (画像のURLの最後に?last_update = [TIMESTAMP]を渡しても機能しませんでした)。
  • 私にとって唯一の効果的な回避策は、画像に新しい名前を割り当てることです。

以前に投稿された投稿の画像または動画の更新に関する注意:

  • デバッガーを呼び出してページのog:tagsの変更を破棄する場合、そのURLの以前のFacebook共有はすべて古い画像/動画を引き続き表示します。以前のすべての投稿を更新する方法はありません。セキュリティ上の理由から、この方法は仕様です。そうしないと、ユーザーが実際に共有していないものをユーザーが共有しているふりをすることができます。
78
Oriol Esteban

多くのページがあり、手動で更新したくない場合は、自動的に更新できます。

写真付きのユーザープロフィールページがあるとします。

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

これをページに追加するだけです:

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

これにより、Facebookキャッシュが更新されます。 jQueryソリューションを使用する場合は、console.logの「response」をご覧ください。「updated_time」フィールドとその他の有用な情報があります。

19
Zhorzh Alexandr

OGサムネイルは、fbrefresh変数を渡しても更新されないようです。自動クリアを待たずにこれを更新するには、サムネイルに関連付けられたメタタグ値のファイル名を変更して更新する必要があります。

11
Seb

og:imageを使用しても同じ問題が発生しました。ファイルの名前変更やFBキャッシュのクリアを何度も試みても、facebookデバッガーまたは実際のアカウントでテストできませんでした。

新しいFacebookのガイドラインでは、画像サイズは1200 x 630であるか、そのアスペクト比を持つ必要があると述べていますが、これは間違っているようです。私のために働いた唯一のことは、平方寸法

Edit *1200 x 630を使用するために戻った数時間後、魔法のように動作しました。

また、ファイルの名前をf * ^ * kfacebook.jpgに変更しました。これが役立つかどうかはわかりませんが、良い感じがしました。

6
Wyck

基本的に、答えは忍耐です;)

今朝、リンターをチェックしました。og:titleとog:urlは、冗長な値なしで正しく表示されます。 FaceBookは特定の間隔でキャッシュを自動的にクリアすると思います。待つだけです。

enter image description here

6
Ardee Aram

Ooook、最後に役立った(私はIP.Boardを使用している)。私がしなければならなかったことは:

  1. Webサイトのog:imageのURLを変更します(一般構成)。
  2. ?fbrefresh = 1154464Gd56でこのメソッドを試してください

このスレッドの著者に感謝します!

編集:画像の要件についてさらに覚えておく必要があるもの。今のところ(2013年1月):-双方向で少なくとも200ピクセル-最大比3:1

4
Matt

実は、実際のURLにはクエリ文字列が含まれていたため、正しいURLをリントしていませんでした(ボットに関する限り、別のページです)。

http://example.com/

!==

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

リンターwillページを再キャッシュします。待つ必要はありません。

4
Ryan Florence

はい、facebookは24時間ごとにキャッシュを自動的にクリアします:実際にはfacebookはページをスクレイプし、24時間ごとにキャッシュを更新します https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo

4
kbsbng
  1. FBページをご覧ください https://developers.facebook.com/tools/debug/og/object/
  2. ドメインを入力してください。
  3. [新しいスクレイプ情報を取得]ボタンをクリックします
  4. 完了
4
Cropis

申し訳ありませんが、正しい答えは次のとおりです。

オープングラフog:imageのURLをすぐに更新する確実な方法はありません。fbが更新されるまでキャッシュされます(24時間ごとに報告されます)

以下は、他の人によって機能すると報告されているものですが、私はそれらのいずれかでゼロの成功を収めました。

  • 「新しいスクレイプ情報を取得する」を選択する
  • 実際の画像ファイル名の変更および/またはオリジナルの削除
  • PHP TIMESTAMPまたは?anythingを追加して、画像のURLにクエリ文字列を追加します
  • 「... yoursite.com/?fbrefresh=anything」クエリ文字列をデバッガーのフェッチURLに追加する
  • Og devページの下部にあるグラフAPIリンクを選択する
  • スクレイパーが見ているものを正確に見ることを選択-キャッシュされていないリアルタイムのスクレイプデータを要求するようには見えませんが、ファイルが存在しなくてもキャッシュされた画像のURLを表示します

コードを検査することは、ブラウザのキャッシュやキャッシュサービスの問題ではないことを確認するための方法です。メタ情報がコード内で最新であり、上記のすべてを試した場合(別の提案が実現しない限り)、正しい答えはです。待機する以外は何もできません

3
Philip Ingram

追加する1つのことは、URLが大文字と小文字を区別するです。ご了承ください:

apps.facebook.com/-HELLO

リンターの目は違う

apps.facebook.com/-hello

アプリの開発者設定で入力した正確なサイトURLを使用してください。それ以外の場合、リンターはプロパティを返しますが、キャッシュは更新しません。

3
Justin

Facebook Developer Documentsによると、titleプロパティには例外があります。

50のアクション(いいね!、共有、コメント)がオブジェクトに関連付けられると、タイトルを更新できなくなります

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

1
moogoo

画像が72dpiの場合、画像サイズのエラーが発生することがわかりました。代わりに96dpiを使用してください。お役に立てれば。

1
Gordon
  1. http://developers.facebook.com/tools/debug に移動します

  2. ページのURLを貼り付けて、[デバッグ]をクリックします。サイトでURLエイリアスを使用している場合、Facebookが共有しているページに使用しているURLと同じURLを使用していることを確認してください(例:Drupalでは、ページがそのURLを介して共有されている場合、エイリアスの代わりにnode/*パスを使用します)。

  3. 「共有ダイアログでこれを見る」リンクの「共有プレビュー」部分をクリックします
1
Hans Rossel

これはキャッシュであり、更新されますが、キャッシュが時々行うことを意図しています。したがって、待機は最終的には機能しますが、時にはそれをより速くする必要があります。ファイル名の変更は機能します。

0
Srneczek

本当に簡単に解決します。テスト済みで動作しています。メタタグを更新するときに、新しいURLを生成するだけです。 URLに「&cacheBuster = 1」を追加するのと同じくらい簡単です。メタタグを変更する場合は、「&cacheBuster = 2」をインクリメントするだけです

元のURL

www.example.com

ogメタタグが更新されるときのURL:

www.example.com?cacheBuster=1

ogメタタグが再度更新されるときのURL:

www.example.com?cacheBuster=2

Facebookはそれぞれを新しいURLのように扱い、新しいメタデータを取得します。

0
Will

同様の経験がありました。ウェブサイトのリンクは、facebookが生成したプレビューに404を表示していました。 og:urlメタデータが間違っていたことが判明しました。数日前にすでに修正していましたが、まだプレビューで404が表示されていました。 https://developers.facebook.com/tools/debug/ でツールを使用し、更新を強制しました(途中でパラメーターを追加する必要はありませんでした)。 24時間後にキャッシュを更新しませんでしたが、ツールはキャッシュを強制的に支援しました。

0
jawss510

私もこの問題を抱えていました。スクレイパーには正しい情報が表示されますが、共有URLにはまだ古いデータが入力されています。

これを回避する方法は、共有の代わりにフィードメソッドを使用し、データを手動で入力することでした(共有メソッドでは公開されません)

このようなもの:

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

私にとっては、すべてのソリューションが機能しませんでした。 Wordpress with Yoast SEOを使用している場合、この2つのタグを更新する必要があることがわかりました。

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

値を更新するには、記事への変更を送信する必要があります。この日付を変更しないと、facebookのキャッシュは更新されません。

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