[英]Social Counters Causing Slow Load
我在主页上为博客添加了一些社交计数器。 该博客显示了10个帖子,并且无限滚动地加载了更多帖子。
考虑到它必须每个帖子执行3个请求,并且还必须显示10个帖子-这意味着必须显示30个请求才能显示页面。
使用get_transient / set_transient似乎可以立即加载页面,但每小时之后,会有1个人的加载时间很长-只是想知道我是否可以通过使用jQuery检查变量是否已更改来使其更快(如果有,那么使其在页面加载后发出请求)。
我完全不了解jQuery,并希望对此有所帮助。
function getShares($url){
$fbcount = get_transient('share_count');
if ($fbcount !== false) return $fbcount;
$fbcount = 0;
$fql = "SELECT share_count FROM link_stat WHERE url = '".$url."'";
$apifql = "https://api.facebook.com/method/fql.query?format=json&query=".urlencode( $fql );
$json = file_get_contents( $apifql );
$data = json_decode($json);
$fbcount = $data[0]->share_count;
set_transient('share_count', $fbcount, 60*60);
return $fbcount;
}
function getPlus1($url) {
$gpcount = get_transient('plusone_count');
if ($gpcount !== false) return $gpcount;
$gpcount = 0;
$html = file_get_contents( "https://plusone.google.com/_/+1/fastbutton?url=".urlencode($url));
$doc = new DOMDocument(); $doc->loadHTML($html);
$counter=$doc->getElementById('aggregateCount');
$gpcount = $counter->nodeValue;
set_transient('plusone_count', $gpcount, 60*60);
return $gpcount;
}
function getTweets($url){
$tweetcount = get_transient('tweet_count');
if ($tweetcount !== false) return $tweetcount;
$tweetcount = 0;
$json = file_get_contents( "http://urls.api.twitter.com/1/urls/count.json?url=".$url );
$ajsn = json_decode($json, true);
$tweetcount = $ajsn['count'];
set_transient('tweet_count', $tweetcount, 60*60);
return $tweetcount;
}
将结果存储到数据库中,如果结果早于一个小时,请重新下载。
(当然,还要使用新数据将其再次放入数据库中)。
您甚至不需要jQuery。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.