Социальные счетчики, вызывающие медленную нагрузку

0

Я устраиваю свой блог с помощью социальных счетчиков на домашней странице. Блог показывает 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;
}
  • 0
    лучше использовать любой ленивый загрузочный плагин ..
  • 0
    Я хотел сделать это таким образом, потому что я могу настроить значки вокруг графов. С другими плагинами я не видел никаких вариантов для этого.
Теги:
facebook
twitter
google-plus

1 ответ

0

Сохраняйте результаты в базе данных, и если результаты старше часа, снова загрузите их.

(И, конечно, снова добавьте его в базу данных с новыми данными).

Для этого вам даже не нужен jQuery.

  • 0
    У меня сложилось впечатление, что get / set transient использует SQL для сохранения своих данных. Пока он кешируется нормально, но мне просто интересно, что это за один пользователь каждый час, если это можно ускорить.
  • 0
    Это будет быстро, не беспокойтесь о скорости

Ещё вопросы

Сообщество Overcoder
Наверх
Меню