0

ウェブサイトでFacebookのコンテンツを共有するのに問題があります。「いいね」ボタンが実装されていますが、「いいね」をすると、Facebookプロファイルの画像に古い画像が表示されます(キャッシュされた画像)。そのウェブサイトにあるものはこのように機能します...毎日その日の女の子の新しい写真がありますが、URLは常に同じです(apacheによって書き直されています)。

Facebookのキャッシュを自動的かつ定期的に(新しい画像がサイトに設定されたときに)クリアする方法を見つける必要があります。

キャッシュを直接更新したいURLをfbdebugtool(lint)フォームに入れて「debug」を押すと、somobodyが私のWebサイトのコンテンツを気に入ったときに、キャッシュをクリアしてコンテンツを更新します。

しかし、問題は、キャッシュを自動的に更新しようとすると(phpスクリプトまたはcronジョブを介して)です。このようなものが機能しない:

wget http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana

またはこのようにも機能しません:

curl http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana

また、phpスクリプトが機能していません:

$url = "http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana";
$useragent = "Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.10.229 Version/11.60";

if ( $ch = curl_init( $url ) )
{
    curl_setopt( $ch , CURLOPT_HEADER , 0 );
    curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true );
    curl_setopt( $ch , CURLOPT_USERAGENT , $useragent );

    $str_response = curl_exec( $ch );

    if( curl_errno( $ch ) != 0 )
    {
        $message = 'Girl of the day - cURL exec error: ' . $ch;

        error_log( $message );
    }

    curl_close( $ch );
}
else
{
    $message = 'Girl of the day - cURL init with url: ' . $url . ' failed';

    error_log( $message );
}

好きなコンテンツはURLにあります:

http://www.vecernji.hr/djevojka-dana および http://www.vecernji.hr/decko-dana

PHPスクリプト、wget、またはcurlを介してキャッシュを更新できない理由を誰かが知っていますが、指定されたURLをlintフォームに直接手動で入力し、送信ボタンを押すと、コンテンツが更新されますか?

4

3 に答える 3

2

私がこれに出くわしたのは、動作状態にあった同様のスクリプトが突然機能しなくなったためです。多くの人がそれを使用していて負荷が高かったため、Facebook はこれを禁止していると思いました。

とにかく、時間を節約するために私ができる次善の策は、更新が必要な lint ツールへのすべてのリンクを出力するスクリプトを作成することでした。次に、Linky などのツールを使用して、すべてのリンクを一度に開きました。バム、すべてのキャッシュがクリアされました。

これを 1 日 1 回行う必要がある場合、このソリューションを使用するのは少し面倒になると思いますが、コーヒーを飲みながら 5 秒で完了でき、非常に単純なタスクとして誰にでも委任できます。必要に応じて、特定の時間にその URL のページを自動的に開き、すべてを選択して Linky を使用するスクリプトを取得できると確信しています。Facebook がこのタスクに対して CURL を承認していないことを回避する方法を考え出すよりも簡単なはずです。

于 2012-06-07T17:02:26.130 に答える
0

次の行を追加する必要があります。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

(Sidniciousへのクレジット:cURLからURLリンターが機能しない

于 2012-11-13T14:56:21.353 に答える
0

Facebookキャッシングの詳細については、以下の私の以前の回答へのリンクを参照してください:

http://facebook.stackoverflow.com/a/9019926/558021

于 2012-01-26T15:05:43.640 に答える