【发布时间】:2015-01-07 21:50:52
【问题描述】:
我正在开发一个大数据客户端应用程序。服务器语言是 Java。在前端,我有大量的原生 JavaScript,但 AngularJS 作为 MVC 框架。
问题
处理大数据分析,一次单个 REST api 响应约为 1.5MB 到 3MB。处理这些数据来构建 DOM 是一件很痛苦的事情。
- 首先加载 JSON 大约需要 5 到 10 秒。
- 然后我构建 UI (DOM)
- 构建 DOM 后,基于用户与数据的交互 - 我必须使用更新值的相同 JSON 发送/返回服务器。
建议,我有哪些选项可以优化页面响应能力?
- 我想到的几件事:
- 一次将 JSON 分解为 1000 个块,一旦加载 DOM,然后静默获取数据并更新 UI。
- 在服务器上对 JSON 进行 GZIP 压缩并在客户端解码回。
给我你的具体解决方法!
示例 JSON 可能是:
var data = [
{
prop:val,
prop2: {},
prop3:[
id: val,
prop4: { {}, {}, {}, {}},
prop5: [ [], [], [] ]
]
},
{},
{},
{}
]
一些用例
- 数据大小可以是 10000 个对象,嵌套在至少六、七个深度级别。
- 需要构建网格(表格),行的长度与对象和列的长度相同,至少 100 列。
- 所有数据单元格都有自定义上下文菜单、嵌套标题、所有列可排序、行可排序,一旦用户更改,这些排序的顺序就会到达服务器。但我确实有一秒的门槛。
一个非常基本的例子在这里:http://shekhardesigner.github.io/OuchGrid/
【问题讨论】:
-
嗨,我不知道你的设计,但是延迟加载呢?也许您正在显示一个大数据列表,并且您只能加载列表的那部分,即用户可见的部分。 Here 是指向 ngInfiniteScroll 的链接 - 正是我所说的。
-
能否请您发布您发送给客户的数据样本。
-
您应该将服务器配置为 gzip 响应 - 特别是对于较慢的 Internet 连接,压缩/解压缩所需的时间应该少于下载如此大文件所需的时间。请记住,如果您设置正确的 HTTP 标头,大多数浏览器都能够本机处理压缩响应。
-
数据是保密的,所以我不能发布。
-
我只需要一个结构而不是数据本身。假装哈哈
标签: javascript json angularjs performance dom