В моем приложении я использую систему аутентификации Laravel, и я использую инъекцию зависимостей (или фасад) для доступа к зарегистрированному пользователю. Я, как правило, чтобы сделать вход в доступном пользователе через мой базовый контроллер, так что я могу получить доступ к нему легко в моих детских классов:Laravel кэширование аутентифицированных отношений пользователя
class Controller extends BaseController
{
protected $user;
public function __construct()
{
$this->user = \Auth::user();
}
}
Моего пользователь имеет ряд различных отношений, которые я, как правило, нетерпеливые нагрузки, как это:
$this->user->load(['relationshipOne', 'relationshipTwo']);
Как и в этом проекте, я ожидаю, что получаю постоянно высокие объемы трафика, я хочу, чтобы приложение выполнялось как можно плавно и эффективно, поэтому я ищу для реализации некоторого кэширования.
Я в идеале должен быть в состоянии избежать повторного запроса базы данных, особенно для связанных записей пользователя. Как таковой, мне нужно изучить кэширование объекта пользователя после загрузки отношений.
у меня была идея сделать что-то вроде этого:
public function __construct()
{
$userId = \Auth::id();
if (!is_null($userId)) {
$this->user = \Cache::remember("user-{$userId}", 60, function() use($userId) {
return User::with(['relationshipOne', 'relationshipTwo'])->find($userId);
});
}
}
Однако я не уверен действительно ли это безопасно полагаться на того или нет \Auth::id()
возвращает ненулевое значение, чтобы пройти аутентификацию. Кто-нибудь сталкивался с подобными проблемами?