BreezeJS:索引缓存

BreezeJS: Indexed Cache

我正在使用 BreezeJS 和 AngularJS 开发 SPA,处理大量实体(其中一种类型有约 6 万个实体)。这不是一个普通的网站,它是为特定目的而制作的。

大多数情况下,实体显示在可排序的分页列表中。

上述大量实体在工作线程中被缓存和查询,因此 UI 不会被阻塞。我们希望在应用程序初始化后将客户端与服务器的通信保持在最低限度,因此需要缓存大量数据。

工作线程中 entityManager 的结果被导入到 UI 线程中的 entityManager 并进行进一步处理。这一切都很好,我唯一的问题是在如此庞大的数据集上执行 orderBy 需要很长时间才能让 Breeze 在没有索引的情况下完成(2.5-3.5 秒)。

这意味着如果顺序正确,显示下一页的速度慢得令人无法接受。

我当然可以为这个特定模型制作索引并将查询修改为 运行 针对缓存,但考虑到允许更改数据集,维护起来并不容易。

Breeze 缓存今天 没有 索引(索引?)...甚至没有主键。这将需要大幅增加代码库的大小和复杂性来支持它们,我们认为这对于我们通常看到的工作负载来说不值得。

60K 项显然改变了这个等式。

我认为索引是一个很酷的可选模块,某种插件。我认为维护起来并不难,因为 EntityManager 在缓存中发生任何变化时都会引发事件。如果您想将其作为社区贡献……也许是对 Breeze Labs,我很乐意提供建议和帮助。