我有一个运行 Ember@3.20 的项目。我们目前正在从经典组件迁移到基于微光的组件,并且遇到了一些昂贵的计算模式,这些模式将从缓存中受益。
我的问题是,为微光组件缓存功能的最佳方法是什么?看起来目前有几种方法可以做到这一点:
- @cached via tracked-toolbox - 我相信这是在 ember 缓存 api 之前发布的。我没有在引擎盖下偷看,但它有一个 @cached 装饰器,它可能与未来的 ember @cached 发生冲突。
- ember-cache-primitive-polyfill - 在Ember 文档中提到作为 ember 缓存 API (3.22) 的 polyfill,但语法不如 @cached 装饰器简洁
- ember-cached-decorator- polyfill - 与RFC566相关似乎基于选项 2,语法更符合人体工程学
- 升级到 3.22 - 尽量避免碰撞 ember,除非有显着的好处。乍一看,我没有看到这里包含@cached。
关于 getter 应该有多昂贵以保证它被缓存的任何其他见解/指南?例如,防止重新渲染似乎是一个相当明显的用例,但开发人员可能会认为“昂贵”的计算范围很广。