daniel.kong

222 经验值

如果找到解决方案,麻烦分享一下。谢谢 过多的DB查询很影响性能。

似乎也有人碰到类似问题,http://forum.laravelacademy.org/d/48-auth

如果不重新自己写个auth middleware,可以有什么小改动或者什么小技巧把这个问题解决了?如果一个在线项目访问量比较大的情况下,这种无谓的消耗真的很蛋疼

如果说每次点击一个页面或者刷新一下,就要去查询一次DB,这种消耗太大。难道一定要自己去写一个middleware?目前用的是laravel5.3的auth。只要把路由移出middleware的保护,就不会生成这条sql。

laravel 5.2开始自带的auth认证,每次刷新页面验证用户auth时都会去查询当前登陆用户的信息。执行一句sql:
select top 1 * from [adm_users] where [adm_users].[adm_user_id] = '16'

每次刷新页面的时候,laravel都去数据库查询当前用户的信息。只要这个路由用了auth的middleware做保护。例如:

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
    Route::group(['middleware' => 'auth:web'], function() {

        Route::get('/api-key/index', ['uses' => '[email protected]', 'as' => 'admin.api_key.index']);
        Route::get('/api-key/all-access-tokens', ['uses' => '[email protected]', 'as' => 'admin.api_key.all_access_tokens']);
        Route::post('/api-key/destroy-tokens', ['uses' => '[email protected]', 'as' => 'admin.api_key.destroy']);
        Route::resource('seller','SellerController');
    });
});

这些在auth验证保护下的路由每次刷新就会去查询一次数据库,用laravel-debugbar可以跟踪到.

Laravel自带的auth认证的性能问题,自带的auth middleware,每次刷新页面都会去数据库查询一下当前用户的信息,随后再做验证。这样似乎性能很差。如果不自己重新写middleware的情况下,怎样改造一下能缓存住用户登陆信息,不至于每次都查询数据库。 谢谢大家

DB::table('items')
->select(DB::raw('item, sum(amount) as total'))
->groupBy('type','item')
->get();

你会得到type和item各种组合后,每种组合的amount总和。