0

我在我的网站上分享 Facebook 内容时遇到问题。它实现了“喜欢”按钮,但是当您“喜欢”您的 Facebook 个人资料上的图片时,会显示旧图片(显然是缓存的图片)。那个网站上的东西是这样的......每天都有一张当天女孩的新照片,但网址总是一样的(由apache重写)。

我必须找到一些方法来自动和定期(当在网站上设置新图片时)清除 facebook 缓存。

当我将要刷新缓存的 url 直接放入 fb 调试工具(lint)表单并按“调试”时,它会在 somobody 喜欢我网站上的内容时清除缓存并刷新内容。

但问题是当我尝试自动刷新缓存时(通过 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 );
}

喜欢的内容在网址上:

http://www.vecernji.hr/djevojka-danahttp://www.vecernji.hr/decko-dana

有谁知道我无法通过 php 脚本、wget 或 curl 刷新缓存的原因,但是当我将给定的 url 直接手动放入 lint 表单并按下提交按钮时,内容会刷新?

4

3 回答 3

2

我偶然发现了这一点,因为我在工作状态下的一个类似脚本突然不再起作用了。我认为 Facebook 禁止这样做是因为很多人都在使用它并造成了沉重的负担。

无论如何,为了节省时间,我能做的下一件最好的事情是制作一个脚本,输出所有需要刷新的 lint 工具的链接。然后,我使用 Linky 之类的工具一次性打开所有链接。砰,所有缓存都清除了。

如果您需要每天执行一次,我想使用此解决方案可能会有点痛苦,但它可以在 5 秒内完成,同时喝咖啡并委托给任何人,因为这是一项非常简单的任务。如果需要,我相信您可以获得一个脚本,该脚本会在特定时间自动在该 URL 上打开您的页面,全选并使用 Linky。应该比想办法绕过 Facebook 反对 CURL 来完成这项任务更容易。

于 2012-06-07T17:02:26.130 回答
0

您需要添加以下行:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

(归功于 Sidncious:URL linter 不能从 cURL 工作

于 2012-11-13T14:56:21.353 回答
0

有关 facebook 缓存的更多信息,请参阅下面我以前的答案的链接:http:

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

于 2012-01-26T15:05:43.640 回答