web-dev-qa-db-ja.com

Facebookのように-キャッシュされたバージョンog:imageを表示、それを更新または再インデックスする方法?

Facebookのような問題と、キャッシュされたog:imageに問題があります。

簡単に言えば、Facebookは古いバージョンの類似画像をキャッシュしています。メタコンテンツのURLは変更できません。リフレッシュするためにできることはありますか?

長い話:私が取り組んでいるサイトには、Facebookがページを気に入ったときに使用するog:imageのメタタグがあります。このメタタグは、サイト内のすべてのページで同じ画像URLを使用します。画像は、単にサイトのブランド画像です。

問題は、サイトが最近ブランドを更新したことであり、Facebookのような画像を更新することはできません。ユーザーが「いいね!」リンクをクリックしても、結果としてFacebookに送信される投稿には古いブランド画像が表示されます。

メタタグは次のようになります。

<meta property="og:image" content="http://[domain].com/images/bookmark/Apple-touch-icon.png"/>

いいねがFacebookに到達するたびに、画像のURLは、次のようにキャッシュされたFacebook URLに変更されます。

http://external.ak.fbcdn.net/safe_image.php?d=AQDajxm-qgVNdfEL&w=90&h=90&url=http%3A%2F%2F[domain].com%2Fimages%2Fbookmark%2Fapple-touch-icon.png

このURLは、サイトのブランドの古いバージョンを表示します。 1週間以上経ちましたが、まだ更新されていません。

Facebookに画像のインデックス再作成/キャッシュのクリアを強制する方法はありますか?または、Facebookは定期的にこれを自動的に行いますか?これに関する関連情報を見つけることができませんでした。

メタタグのURLを変更すると問題を解決できることはわかっていますが、メタタグは複数のサイトで使用されるコードによって生成され、変更できません。他の人から提案されたように、私はdelinterツールも試しました。運がありません。

52
FHM

URLを linter に挿入すると、キャッシュがリロードされます

75
genesis

Facebookのオブジェクトデバッガーを使用すると、ページのURLを入力でき、次のページで「新しいスクレイプ情報を取得する」リクエストでそれを再送信できます。これにより、指定されたURLのFacebookのキャッシュがクリアされます。すべてのキャッシュノードに伝播するのに時間がかかることはありません。

FacebookのObject Debuggerはここにあります: https://developers.facebook.com/tools/debug/

最近、Facebookが相対URLに対してクエリ文字列を使用してURLをキャッシュしており、クエリ文字列が純粋にクエリ文字列に基づいて提供していたいくつかの動的画像を台無しにしているクエリ文字列が無視されていることがわかりました。

FBがサイトをクロールするとき、常に正しいイメージを取得できるように、最終変更タイムスタンプ(Unixタイムスタンプ形式)を指定できることがわかりました。

これは、次のOGメタタグを含めることで実行できます。

動的サイトの場合、コンテンツ値を生成する必要があります-PHPを使用して、現在のUNIXタイムスタンプを次のように挿入できます。

<meta property="og:updated_time" content="<?=time()?>" />

お役に立てれば!

21
Aran

私は可能な解決策を考えています... URLの最後にランダムな文字列を追加したらどうなりますか?

www.server.com/something.php?v=<?php echo Rand() ?>またはwww.server.com/something.jpg?v=<?php echo Rand() ?>など

私はURLに応じてfacebook cahceオブジェクトを推測する...それをランダムに変更する...助けになるかもしれない。