Release 3.14.0
· 3 minute read
2024 新年快乐。
升级请参考 如何更新 Midway 中描述,请不要单独升级某个组件包。
本次 3.14 版本,重写了 Cache 组件,同时 也带来了一些新的特性,我们将一一介绍。
全新的 CacheManager 组件
这一版本,Midway 将底层依赖的 cache-manager
模块升级到了 v5 版本,由于存在 Breaking Change,启用了一个新的 @midwayjs/cache-manager
组件,原有 @midwayjs/cache
组件不再更新。
在新组件中,提供了装饰器 @Caching
用于快速缓存函数结果。
比如:
@Caching('default', 100)
async invokeData(name: string) {
return name;
}
那么,在多次调用时就会缓存返回值,如果超时,则会返回新的值。
await invokeData('harry'); // => harry
await invokeData('harry1'); // => harry
await invokeData('harry2'); // => harry
await sleep(100);
await invokeData('harry3'); // => harry3
这在一些性能敏感的场景会非常有用。
此外,@Caching
装饰器还支持多级缓存,如果一个缓存实例配置了多个 Store,那么它将自动根据缓存的顺序进行处理。
最重要的一点,组件通过新设计器的 createRedisStore
方法支持复用 Redis 组件的配置了。
import { createRedisStore } from '@midwayjs/cache-manager';
// src/config/config.default.ts
export default {
cacheManager: {
clients: {
default: {
store: createRedisStore('default'),
// ...
},
},
},
redis: {
clients: {
default: {
port: 6379,
host: '127.0.0.1',
}
}
}
}
这下不再需要配置 Redis 多遍了。
更多功能可以接着查看 文档。
Swagger 组件的全新渲染方式
由于之前的版本无法传递 swagger-ui
参数,这个版本设计了一组新的 UI 渲染方式,尽可能的帮助开发者自定义 UI。
现在,通过 renderSwaggerUIDist
,renderJSON
和 renderSwaggerUIRemote
方法,你可以选择自己喜欢的方式进行渲染。
// src/config/config.default.ts
import { renderSwaggerUIRemote } from '@midwayjs/swagger';
export default {
// ...
swagger: {
swaggerUIRender: renderSwaggerUIRemote,
swaggerUIRenderOptions: {
// ...
}
},
}
只要网络环境允许,即使不再引用 swagger-ui-dist
包,也可以通过 CDN 资源加载 UI,进一步减轻服务端压力。
也可以仅输出 Swagger JSON
内容,不提供 UI,这都可以根据业务随心配置。
服务工厂实例支持优先级
这一版本可以针对创建出的实例设置不同的实例优先级。