在中间件内将服务器对象保存在环回 4 应用程序中以缓存
Preserving server objects over requests in a loopback 4 app to cache, within a middleware
我有一个内置在 loopback4 中的应用程序,这是一个用于构建 REST Api 的 nodejs 框架。
在该应用程序中,我想缓存各种 jwt 令牌颁发者的 public 证书,而不是在每次 api 调用时都请求这些证书。我的问题是顺序,每个中间件都会根据每个请求获得一个新实例。虽然我可以使用像 redis 这样的东西,但我想知道我是否可以在没有额外服务的情况下实现类似的东西。我看不出有任何可能从应用程序中提交比单个请求持续时间更长的对象,有什么想法吗?
我假设同样适用,例如对于执行内存缓存的快速中间件
我通过创建缓存服务解决了这个问题,该服务是在 application.ts 中为应用程序创建的:
import {CacheService} from './caching/cacheservice.service';
import {CacheServiceBindings} from './caching/keys';
[..]
this.add(createBindingFromClass(CacheService, {key: CacheServiceBindings.CACHE}));
并在 sequence.ts 构造函数中注入:
@inject(CacheServiceBindings.CACHE) protected cache: CacheService,
这样我就可以使用这个对象来保持序列中的整个应用程序生命周期。
我有一个内置在 loopback4 中的应用程序,这是一个用于构建 REST Api 的 nodejs 框架。 在该应用程序中,我想缓存各种 jwt 令牌颁发者的 public 证书,而不是在每次 api 调用时都请求这些证书。我的问题是顺序,每个中间件都会根据每个请求获得一个新实例。虽然我可以使用像 redis 这样的东西,但我想知道我是否可以在没有额外服务的情况下实现类似的东西。我看不出有任何可能从应用程序中提交比单个请求持续时间更长的对象,有什么想法吗?
我假设同样适用,例如对于执行内存缓存的快速中间件
我通过创建缓存服务解决了这个问题,该服务是在 application.ts 中为应用程序创建的:
import {CacheService} from './caching/cacheservice.service';
import {CacheServiceBindings} from './caching/keys';
[..]
this.add(createBindingFromClass(CacheService, {key: CacheServiceBindings.CACHE}));
并在 sequence.ts 构造函数中注入:
@inject(CacheServiceBindings.CACHE) protected cache: CacheService,
这样我就可以使用这个对象来保持序列中的整个应用程序生命周期。