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


174

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

私は自分のサイトのページで Lintを実行しましたが、次のように表示されまし

Facebook Open Graph lintスクリーンショット

とには2つの値がog:titleありog:url、最後の値が優先されることに注意してください。ただし、最後の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:titleとはog:url何ですか?誰かが同じ問題を経験していますか?


これは歴史のようだと思いますか?私は、最新の取得FBを見ているtitleurl(情報テーブルに)あなたのためになぜわざわざ?
ifaour

問題は、数と同様にFacebookはOLD OGのために、まだです:URL(pinq.dkのための計数とは反対に、200以上の周りにある)pinq.dk/tilbud/landsdaekkende/lissy
Ardeeアラム

これは歴史だとは思いません。より多くのog:urlが(おそらく)2回設定され、最後のものが優先されます。どういうわけか、コードから既に削除されている古い値は、依然としてメタ値に影響を与えます。
Ardee Aram、2011

3
まあ、の読んだ本を。特にメタタグの編集セクション。関連しているかどうかはわかりませんが、役立つ場合があります。これを後でチェックします、ごめんなさい!
ifaour

2
それはおそらくそれです。「ページの<meta>タグを更新することで、ページの属性を更新できます。og:titleとog:typeは、最初にのみ編集可能であることに注意してください。ページが50のいいね!を受け取った後、タイトルが修正され、ページが10,000のいいねを受け取った後タイプは固定されます。これらのプロパティは、既にページを気に入っている意外なユーザーを避けるために固定されています。これらの制限に達した後でタイトルまたはタイプタグを変更しても、何も行われません。ページは元のタイトルとタイプを保持します。」ifaour、ありがとう!
Ardee Aram、2011

回答:


304
  1. http://developers.facebook.com/tools/debugにアクセスます
  2. 次のURLを入力してください fbrefresh=CAN_BE_ANYTHING

例:

  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はキャッシュのサムネイルを保存します。サーバーからサムネイル/画像を削除しても更新されません。しかし、Facebookでは、fbrefresh

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


30
デバッグツールがオブジェクトなしでオブジェクトを更新するため、param fbrefreshは必要ない場合があります。
alexandru.topliceanu 2012年

7
このパラメーターを使用しない限り、キャッシュはクリアされません。
UmurKontacı2012

26
正しくない、そのパラメーターを追加してもデバッグツールの動作に違いはありません
Igy

7
fbrefreshパラメーターを使用する必要はありませんが、そのドメインを所有するFBアプリの管理者としてログインする必要があります。そうしないと、キャッシュは更新されません。
フェリペブラーム2012年

3
fbrefreshパラメーターの追加がうまくいったことを確認できます。デバッガが正しいデータを表示していたとしても、URLを共有すると、古いデータが使用されました。しかし、fbrefreshパラメータを指定してデバッガを使用すると、通常の共有でも正しいデータが使用されました。
アイスクリーム

82

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

これらは、2014年11月の時点で使用する必要がある2つのオプションのみです。

非開発者向け

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

開発者向け

  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:タグの変更をスクラップしても、そのURLの以前のすべてのFacebook共有には古い画像/ビデオが引き続き表示されます。以前のすべての投稿を更新する方法はありません。セキュリティ上の理由から、これは仕様によるものです。そうしないと、誰かが、ユーザーが実際には共有していない何かをユーザーが共有しているように見せかけることができます。

ページの共有数が返されないようです。このエンドポイントの出力に情報が含まれるようにするには、ページにFacebookの「いいね!」/「共有」ボタンを配置する必要があるという「postoverflow.com/questions/3581488/…」というこの投稿を読みました。
WillyBurb 2015

タグがページのBODYではなくHEADにあることを確認してください-デバッガーはこれを警告しますが、無視されます(はい、私はあなたがこれを強調したかっただけです)
Simon_Weaver

@Oriol Esteban画像を更新する他の方法を見つけましたか?
Petr

3
@Oriol私が最近これを試したとき、(developers.facebook.com/docs/sharing/opengraph/…のように)このURLにPOST投稿する必要がありました
Glen T

1
og:videoのURLを変更するときにキャッシュをスクラッチする方法に関するアイデア????? 動画を少し編集してURLを変更しましたが、facebookに古いバージョンが表示され続けます。私は明らかにデバッグでスクラッチを行いました(それはそこに正しく表示されます)が、ポストではありません!...これは私を夢中にさせています!
RayOnAir 2015年

19

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

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

$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の「応答」を確認してください。「updated_time」フィールドとその他の有用な情報が見つかります。


これは、画像キャッシュを無効にする唯一の一貫したソリューションでした。を使用fbrefreshしても問題は何も起こりませんでした。
ヘラタン14

こんにちは、私はこのメソッドを試していますが、いくつかのエラーを取得しています$ 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 14

私は次のエラーUncaught ReferenceErrorを
受け取り

@monsterboy $-これはjQuery関数へのショートカットです。$ .post()はjQuery.post()と同じです。このライブラリを使用するには、まずライブラリをインポートする必要があります。<script src = " code.jquery.com/jquery-latest.min.js " type = "text / javascript "> </ script>
Zhorzh Alexandr 14

@ZhorzhAlexandr thx for ur answerしかし、私はwordpressを使用していて、毎日編集できる1つの投稿があるので、共有する前に毎回このスクリプトを使用するにはどうすればよいですか?
Antwan 2014年

12

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


他の回答によると、fbrefreshURLパラメータを使用して強制的に更新できます。
サムムスマン

1
@SamMussmannこれは(もしそうなら)OGタグのコンテンツのキャッシュを更新するだけで、コンテンツのURLから見つかった実際の画像は更新しないようです。EG:OGタグは同じに保ちますが、画像ファイルを変更し(名前を同じに保ちます)、画像自体はキャッシュに残ります。Sebが言ったように、画像ファイル名を変更する必要があることを除けば、これを解決する方法はありません。
Nick M

@Nick M他に解決策はありましたか?
Petr

解決しました。タグを生成するphpスクリプトの画像URLに?t = TIMESTAMPを追加して解決しました。今のところそれは動作します。
Petr

画像ファイルの名前を変更してメタタグの値を更新するだけで、機能しません。
Antonio Ooi

7

私は使用して同じ問題がありました og:imageた。ファイルの名前を変更したり、FBキャッシュをクリアしたりするいくつかの試みは、facebookデバッガーまたは実際のアカウントを介したテストのどちらでも機能しませんでした。

新しいFacebookのガイドラインでは、画像サイズは1200 x 630またはそのアスペクト比にする必要があると記載されていますが、これは間違っているようです。私にとって有効だったのは、正方形の寸法の画像を使用することだけでした。でした。

編集* 数時間前に1200 x 630を使用するようになりましたが、それは魔法のように機能し、魔法のようでした。

また、ファイルの名前をf * ^ * kfacebook.jpgに変更しました。


6

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

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

ここに画像の説明を入力してください


開発者向けFacebookから、オブジェクトキャッシュは7日ごとに期限切れになり、Facebookはオブジェクトが次に使用されるときに自動的に再スクレイピングします。
Venugopal

4

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

http://example.com/

!==

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

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


4

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


現在のドキュメントによると、キャッシュ期間は30日です。
patrickhawley 2015

1
この情報の更新されたリンク- developers.facebook.com/docs/plugins/faqs -あなたはより頻繁にこすりするためにそれを設定することができます
mouseYの

4

Ooook、やっと助​​けになった(私はIP.Boardを使っている)。私がしなければならなかったことは:

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

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

編集:画像の要件について覚えておくべきことは何ですか。現在(2013年1月)は次のとおりです。-両方向に少なくとも200ピクセル-最大比率3:1



3

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

apps.facebook.com/ HELLO

そのときリンターの目は違う

apps.facebook.com/ hello

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


3

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

開いているグラフのog:image urlを即座に更新するための簡単な方法はありません。fbが更新されるまでキャッシュされる(報告によると24時間ごと)

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

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

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


1

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


1
  1. http://developers.facebook.com/tools/debugにアクセスます

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

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

最高のソリューション!ありがとう
MeV


0

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


0

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


では、なぜ-1なのでしょうか。文字通り誰もCHANGE THE FILENAMEの最も簡単な解決策には答えず、実際には、投票しなかった、または少なくともそうでしたが古くなった他の回答(+/- 5)とは異なります。なんらかの理由でファイル名を変更できない場合、この回答は役に立ちません。
Srneczek 2015

0

私もこの問題を抱えていました。スクレイパーには正しい情報が表示されますが、共有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

本当に簡単に解決します。テスト済みで動作しています。メタタグを更新するときに新しい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

数年後、これはまだ一般的な問題ですが、常にFacebookのキャッシュではありません。これは非常に頻繁に人為的なエラーです(詳しく説明させてください)

OG:TYPEは画像のスクレイピングに影響します。

  1. https://ogp.me/#type_article と同じではありません https://ogp.me/#type_website

og:type = websiteは、そのURLの/ sub-pages /が「正規」になることに注意してください。これは、スクレイパーを使用して画像を更新しても問題が発生することを意味します。

この「仮定とよくある間違い」を考えてみてください

- <meta property="og:type" content="website" />=> https://www.example.org (親
)- <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/そして/child-2/継承しますog:image親のを

それらは「すべてのウェブサイト」ではなく、1つはウェブサイトで、その他は記事です。

そうすると、Facebookはそれらすべてを正規のものと見なし、最初のog:imageをそれらすべてに入れます。(試してみるとわかります)-og:urlをルートまたは親ドメインに設定すると、Facebookですべて正規のものになると伝えました。(そのための正当な理由はありますが、オフトピックです)

この解決策を検討してください(ほとんどの人が「本当に望んでいる」ことです)。

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

あなたが今それをすれば、Facebookはあなたにあなたの新しい画像をこすることではるかに少ない問題を与えるでしょう。

最後に、はい、キャッシュバスター、ランダム変数、URLの変更、およびここでの提案は機能しますが、これが正しく指定されていないと、「断続的なブードゥー」のように見えog:typeます。

PS:CDNまたはサーバーサイドのキャッシュは、最新のバージョンを見ることができると「思った」としても、Facebookのスクレイパーに役立つことを覚えておいてください。(再確認しないと、膨大な時間を無駄にしてしまうことを指摘する以外に、時間を費やしたりはしません。)


0

最近、Facebookで別の似たような問題がありましたが、言及したスクレイパー/デバッグページは、ページ全体を読み取っていないようです。Open Graphのメタプロパティはヘッドセクションのさらに下にあり、スクレイパーは常にイメージの仕様が正しくないことを通知し、キャッシュされたバージョンを使用していました。Open Graphタグをコードのさらに上のページの最上部近くに移動すると、毎回すべてが完全に機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.