Cache 是否在 API 路由中工作,我们应该使用它吗?
Does Cache work in an API route and should we use it?
我正在创建一个 API。在此 API 中,我在中间件和控制器中多次从数据库访问(权限)table。我在想,与其多次访问数据库,不如调用一次,多次使用。调用一次后,我可以将其存储在服务提供商的缓存中。但我不确定这是否是一个好方法,因为 API 路由不会加载会话等所有服务。
还有其他方法,例如将数据存储到配置中。或者创建一个 class 并为其创建外观,然后在需要时调用它。但我很好奇缓存是否可以在 API 路由中工作,这是个好主意吗?
好的,根据@lagbox 的建议,我创建了一个非常简单的 class。
namespace App\Helpers;
use App\Permission;
class Provide
{
public $permissions = [];
function __construct() {
$this->permissions = Permission::whereNotNull('route_name')->get();
}
}
这可能会有所不同,它只是一个 class 将在其中保留一些收集数据。我将其命名为 provide
以保持其通用性,以防将来我可能需要除许可之外的其他数据。当然这个 class 可以更详细,但仅用于存储和返回权限就足够了。
然后我在我的 AppServiceProvider 中将它作为单例绑定到 运行 它只绑定一次。
public function register()
{
$this->app->singleton('App\Helpers\Provide', function ($app) {
return new \App\Helpers\Provide();
});
}
当我需要它时,我会这样称呼它
$provide->permissions->toArray()
合集所有功能从头到尾无处不在。是的,这可能看起来有点矫枉过正或滥用 IoC,但这种超级简单的方法对我来说是一个极好的解决方案。
我正在创建一个 API。在此 API 中,我在中间件和控制器中多次从数据库访问(权限)table。我在想,与其多次访问数据库,不如调用一次,多次使用。调用一次后,我可以将其存储在服务提供商的缓存中。但我不确定这是否是一个好方法,因为 API 路由不会加载会话等所有服务。
还有其他方法,例如将数据存储到配置中。或者创建一个 class 并为其创建外观,然后在需要时调用它。但我很好奇缓存是否可以在 API 路由中工作,这是个好主意吗?
好的,根据@lagbox 的建议,我创建了一个非常简单的 class。
namespace App\Helpers;
use App\Permission;
class Provide
{
public $permissions = [];
function __construct() {
$this->permissions = Permission::whereNotNull('route_name')->get();
}
}
这可能会有所不同,它只是一个 class 将在其中保留一些收集数据。我将其命名为 provide
以保持其通用性,以防将来我可能需要除许可之外的其他数据。当然这个 class 可以更详细,但仅用于存储和返回权限就足够了。
然后我在我的 AppServiceProvider 中将它作为单例绑定到 运行 它只绑定一次。
public function register()
{
$this->app->singleton('App\Helpers\Provide', function ($app) {
return new \App\Helpers\Provide();
});
}
当我需要它时,我会这样称呼它
$provide->permissions->toArray()
合集所有功能从头到尾无处不在。是的,这可能看起来有点矫枉过正或滥用 IoC,但这种超级简单的方法对我来说是一个极好的解决方案。