Описание
В моей ситуации у меня нет таблицы users
локально, но у меня есть api, который предоставит мне список пользователей.Как кэшировать текущий аутентифицированный пользователь? (Laravel 5)
getUsers()
я изменить мой getUsers()
для моего Auth::user()
в app/Auth/ApiUserProvider.php
protected function getUsers()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, env('API_HOST') . 'vse/accounts');
$response = curl_exec($ch);
$response = json_decode($response, true);
curl_close($ch);
return $response['data'];
}
Выпуск
Каждый раз, когда я использовал Auth::user()
в моем коде. Он вызывает мой API .../vse/accounts
В моем приложении много задержки.
Попробуйте # 1
Session
protected function getUsers()
{
if(Session::has('user')){
return Session::get('user');
}else{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, env('API_HOST') . 'vse/accounts');
$response = curl_exec($ch);
$response = json_decode($response, true);
curl_close($ch);
$user = $response['data'];
Session::put('user',$user);
return $user;
}
}
Результат
Это занимает 2 секунды дольше. :(
Try # 2
Cache
protected function getUsers()
{
$minutes = 60;
$value = Cache::remember('user', $minutes, function() {
//your api stuff
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, env('API_HOST') . 'vse/accounts');
$response = curl_exec($ch);
$response = json_decode($response, true);
curl_close($ch);
$user = $response['data'];
return $user;
});
}
Как я могу решить это?
Должен ли я начать использовать кэш? Если да, то как Я изменяю то, что мне нужно сделать примерно так?
Должен ли я хранить его в сеансе?
Я открыт для любых предложений прямо сейчас.
Любые намеки/предложения на это будут высоко оценены!
Попробуйте следующее: http: // laravel.io/forum/11-04-2014-laravel-5-how-do-i-create-a-custom-auth-in-laravel-5 –
Я уже сделал пользовательский аут, я пытался кэшировать мои 'Auth: : user() ', поэтому мне не нужно постоянно ударять мой API. – ihue