У меня есть представление в Laravel, которое отвечает за отображение разных данных, полученных от разных вызовов API Twitter. Это код:
TwitterRepository:
public function getTwitterList($type, $count)
{
list($user, $settings) = $this->twitterConfig();
$url = 'https://api.twitter.com/1.1/'.$type.'/list.json';
$getfield = '?screen_name=' . $user . '&count=' . $count;
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$follow_count = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
$get_count = json_decode($follow_count, true);
return $get_count;
}
... // Some similar methods
TwitterController:
public function index()
{
$twitterConfig = $this->twitterRepository->getTwitterData();
$twitterFollowers = $twitterConfig['followers_count'];
$twitterFollowing = $twitterConfig['friends_count'];
$twitterCountTweet = $twitterConfig['statuses_count'];
$twitterProfileDescription = $twitterConfig['description'];
$twitterProfileImage = $twitterConfig['followers_count'];
$lastTweets = $this->twitterRepository->getLastTweets();
$twitterFollowingJson = $this->twitterRepository->getTwitterList('friends', 15);
$twitterFollowingList = $twitterFollowingJson['users'];
$twitterFollowersJson = $this->twitterRepository->getTwitterList('followers', 15);
$twitterFollowersList = $twitterFollowersJson['users'];
return view('admin.twitter-index', compact('twitterFollowers', 'twitterFollowing', 'twitterCountTweet',
'twitterProfileDescription', 'twitterProfileImage', 'lastTweets', 'twitterFollowingList', 'twitterFollowersList'));
}
Проблема в том, что для каждого добавляемого мной вызова, чтобы получить другую информацию в том же виде (например, списки людей), логически увеличивается время отклика страницы все больше и больше. Не могли бы вы помочь мне улучшить это?
Большое спасибо.
Единственный реальный способ сократить время отклика для пользователя — это делать вызовы API асинхронно из браузера, а не заставлять их делать ваш сервер.
Рассмотрите возможность построения своего представления таким образом, чтобы при загрузке он отображал «загрузку обратной связи» для пользователя, а затем совершал вызовы API через AJAX, причем каждый раздел отображал содержимое по завершении каждого вызова API.
Других решений пока нет …