首先,让我解释一下我正在构建的内容:
我有一个 D3.js 强制布局图,它植根于中心,周围散布着一堆节点。中心节点是某种实体,它周围的节点是与根有某种关联的其他实体。边缘是实际的关系(即两者是如何相关的)。
可以单击外部节点以使目标实体居中并加载其关系
该图是“以自我为中心”的,因为每次单击节点时,它都会成为中心,并且只显示与自身直接相关的关系。
我的设置,以防万一:
我通过 Node.js 提供 API,它将请求转换为对具有大量数据集的 CouchDB 服务器的查询。
D3.js 用于布局,除了 jQuery 和 Bootstrap,我没有使用任何其他客户端库。如果有任何对这个缓存任务有帮助的,我愿意接受建议:)
我的想法:
我每次都可以轻松地抓取图表的几个级别(通过多次列出和扩展子项的过程递归),但是由于单击任何给定节点会加载完全不相关的数据,因此不能保证产生高比例的类似数据为根加载的数据。这似乎完全是浪费,实际上是朝相反方向迈出的一步——我最终会以这种方式进行更多处理!
我可以轻松地维护已检索到的实体的哈希表,并在从服务器请求该实体的数据之前检查该列表。无论我实施何种缓存策略,我都可能最终会这样做,因为它是一种非常简单的减少查询的方法。
现在,你建议我如何缓存这些数据?
有没有什么超级有效的策略来做这种缓存?非常欢迎服务器和客户端选项。这个过程涉及大量数据,任何查询/处理的减少都让我领先于游戏。
谢谢!