Кешировать (даже в пределах запроса) назначенные юзеру роли не безопасно в общем случае. Например, отнимаем у админа права, а он всё ещё может что-то делать. Или другой пример — права выдаются по времени.
Yii::$app->user->can слишком много запросов
Yii::$app->user->can слишком много запросов
Здравствуйте, так как же все таки уменьшить запросы при проверке роли? И почему изначально так получается, баг разработчиков? И цитирую samdark
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
Слишком много - сколько?
Re: Yii::$app->user->can слишком много запросов
На главной 13, когда без проверок вообще 3. На всех остальных страницах ровно по 27 запросов, т.к. проверок чуть больше, чем на главной.
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
Слишком много - это 200+
Re: Yii::$app->user->can слишком много запросов
Спасибо, но ведь их можно уменьшить и потратить на другие нужные задачи
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
Покажите список запросов и код где производятся проверки.
По коду я вижу, что каждое обращение к разрешению кешируется в рамках запроса, если не указаны дополнительные параметры.
По коду я вижу, что каждое обращение к разрешению кешируется в рамках запроса, если не указаны дополнительные параметры.
Re: Yii::$app->user->can слишком много запросов
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
Как видно из видео, в среднем такой запрос занимает около 0.5 мс. Даже если вы их все закешируете, то прирост в производительности составит около 1 мс. Стоит ли оно того?
Re: Yii::$app->user->can слишком много запросов
Они пишут для общего случая, поэтому перестраховываются.Introvert писал(а): ↑2017.08.10, 13:42 Здравствуйте, так как же все таки уменьшить запросы при проверке роли? И почему изначально так получается, баг разработчиков? И цитирую samdarkКешировать (даже в пределах запроса) назначенные юзеру роли не безопасно в общем случае. Например, отнимаем у админа права, а он всё ещё может что-то делать. Или другой пример — права выдаются по времени.
Если у вас нет каких то специфичных требований, то кеширование assignments в пределах запроса значительно уменьшит кол-во запросов.
Ситуацию когда вначале работы скрипта у пользователя есть право и он им пользуется, а через 20 мс его у него отняли и это надо учитывать, отношу к весьма редким.
Re: Yii::$app->user->can слишком много запросов
Не стоит)Как видно из видео, в среднем такой запрос занимает около 0.5 мс. Даже если вы их все закешируете, то прирост в производительности составит около 1 мс. Стоит ли оно того?
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
Как это сделать, кеширование assignments? Можно примерОни пишут для общего случая, поэтому перестраховываются.
Если у вас нет каких то специфичных требований, то кеширование assignments в пределах запроса значительно уменьшит кол-во запросов.
Ситуацию когда вначале работы скрипта у пользователя есть право и он им пользуется, а через 20 мс его у него отняли и это надо учитывать, отношу к весьма редким.
Пишу социальную сеть заявок для фирм.
Re: Yii::$app->user->can слишком много запросов
переписать DbManager::getAssignments чтобы не делало каждый раз новый запрос.