@Alk90
php, mysql, jquery, css, html, api

Как уменьшить трату ресурсов на аутентификацию?

Всем привет! Пишу API для своеобразной соц сети.
При каждом запросе данных происходит:
1. Запрос к БД для проверки существования полученного от клиента токена
2. Если токен существует - запрос на получение ID пользователя с этим токеном
3. Получение данных из БД о пользователе, ID которого получили
4. На основе полученных данных из шага 3, получаем роли пользователя для проверки возможных действий

В итоге при каждом, даже самом маленьком запросе данных, приходится делать 4 обращения в базу данных. Что, наверное не правильно...
Как вы делаете подобное?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Все пункты - это один SELECT запрос.
Откуда Вы 4 набрали?!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Переписать в один запрос. Ну или в два, смотря как роли вытаскивать.
Затем поставить memcache или redis и по ключу "токен клиента" писать готовую структуру пользователя и его прав, соответственно добавить инвалидацию при изменениях в базе. Запросы с несуществующими токенами можно тоже кешировать с указанием разумного TTL и переписывать при генерации нового токена.
Ответ написан
Комментировать
yellow79
@yellow79
Senior Software Engineer
А ещё, как вариант, можно посмотреть в сторону JWT и вообще не ходить в базу на каждом запросе, а только при авторищации
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы