背景
我正在构建一个应用程序,它将在服务器上轮询大型数据集,然后使用D3.js可视化库处理响应 . 然后,用户将能够通过 - 例如 - 覆盖其他相关数据集来进一步操纵视图 .
该站点的这个区域将位于 /app/dataview
之下,并且要求每个视图应具有用于共享/书签的唯一URL . 我认为使用queryParameters是最方便的实现方法,因为它不需要使用DB /数据存储区将URL映射到相应的配置
/app/dataview?q=<<_queryStr_>>
其中<< _ queryString _ >>将是(urlencoded)
{
"title": "ABC",
"layers": [
{
"q": "SELECT * FROM tblA WHERE name='AAPL' ..."
},
{
"q": "SELECT * FROM tblA WHERE name='MSFT' ..."
}
]
}
鉴于每个数据集
-
将需要服务器请求/响应;
-
的大小可达10MB;和
-
可能需要15秒才能使用D3.js进行处理和渲染(之前的酸测试使用非AngularDart方法)
并且采用2层示例,支持页面的数据集大小可以是大约20MB,并且在DOM中完全呈现需要大约30秒 .
(请注意,目标受众可以访问快速,可靠的互联网连接,而应用程序则面向现代浏览器 . )
我希望AngularDart /浏览器以某种方式缓存此视图,以便在视图A和B之间导航时,返回视图A不会简单地为用户触发新的30秒延迟 .
我考虑过使用LocalStorage,但主要问题是我的内容很可能会超过5MB的限制;并且将生成的HTML片段保存为字符串将是一个缓慢的过程,更不用说它们在重新插入时会产生很大的开销 .
我也考虑过使用IndexedDB,虽然我主要关心的是在将文档片段附加/分离到DOM时,事件管理起来很麻烦 . 另外,我并不过分担心在用户会话之外保存状态,所以我想尽可能尝试管理AngularDart中的内容 . 当用户关闭浏览器时,我很高兴视图被垃圾收集 .
问题
使用AngularDart服务缓存部分DOM /文档片段,例如 . @Injectable() class CustomService { ... }
或者AngularDart中是否有其他功能我在文档中找到ViewFactoryCache但是不明白这是否是为此目的而设计的 .
提前致谢...