我在网站上分享Facebook内容时遇到问题。它实现了“喜欢”按钮,但当你“喜欢”时,你的脸谱中的图片会显示旧图片(显示缓存的图片)。这个网站上的东西就是这样......每天都会有一张当时女孩的新照片,但网址总是一样的(用apache重写)。
我必须找到一些方法来自动和定期(当在网站上设置新图片时)清除facebook缓存。
当我在fb调试工具(lint)表单中直接刷新我想要刷新缓存的url并按下'debug'时,当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-dana 和 http://www.vecernji.hr/decko-dana
有没有人知道我无法通过php脚本,wget或curl刷新缓存的原因,但是当我在lint表单中直接手动输入给定的url并按下提交按钮时,内容会刷新?
答案 0 :(得分:2)
我偶然发现了这一点,因为我在工作状态下突然出现的类似剧本再也没有完成它的工作。我认为Facebook禁止这一点,因为很多人都在使用它并造成沉重的负担。
无论如何,我能做的第二件事就是制作一个脚本,输出所有需要刷新的lint工具的链接。然后,我使用像Linky这样的工具一次打开所有链接。 Bam,所有缓存都已清除。
如果你每天需要这样做一次,我想使用这个解决方案可能会有点痛苦,但它可以在喝咖啡时在5秒内完成,并且也可以委托给任何人,这是一个非常简单的任务。如果需要,我相信您可以获得一个脚本,该脚本会在特定时间自动打开该URL上的页面,选择所有并使用Linky。应该比Facebook找出解决CURL对此任务的反对方式更容易。
答案 1 :(得分:0)
有关facebook缓存的更多信息,请参阅下面我的上一个答案的链接:
http://facebook.stackoverflow.com/a/9019926/558021
答案 2 :(得分:0)
您需要添加以下行:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
(感谢Sidnicious:URL linter not working from cURL)