繁体   English   中英

社会计数器导致负载缓慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM