首页 > 解决方案 > 在中间件中保留要缓存的环回 4 应用程序中的请求的服务器对象

问题描述

我有一个内置于 loopback4 的应用程序,这是一个用于构建 REST Api 的 nodejs 框架。在该应用程序中,我想缓存各种 jwt 令牌颁发者的公共证书,以免每次 api 调用都请求这些证书。我的问题是序列,每个中间件都会在每个请求中获得一个新实例。虽然我可以使用 redis 之类的东西,但我想知道是否可以在没有额外服务的情况下实现类似的东西。我看不出有任何可能从应用程序中提交一个持续时间超过单个请求的对象,有什么想法吗?

我认为这同样适用于例如执行内存缓存的快速中间件

标签: node.jsrestmiddlewareloopbackjsloopback4

解决方案


我通过创建在 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,

这样我就可以使用这个对象来保持整个应用程序的生命周期。


推荐阅读