【发布时间】:2016-03-10 18:03:29
【问题描述】:
我开发了一个基于 RESTFul 设计的 Web 应用程序,该应用程序从基于 JAVA 的 Web 服务获取 JSON 响应并显示在 UI 中,并且每 5 秒刷新一次数据。 该应用程序使用 Bootstrap 进行 UI 设计,使用 Backbone 和 require.js 来实现 MVC 结构,其中 JSON 响应被解析为 Backbone 集合。 当管理员使用此应用程序时,JSON 响应大小太大(从 800 到 1100 个对象)。 这就是事情变得混乱的地方。根据我的分析,浏览器占用了太多资源。所以应用程序的其余部分非常慢。例如,如果我尝试打开一个模式,系统会冻结一段时间并缓慢打开,从而导致用户体验非常差。 根据我的分析时间正在解析数据 作为补救措施,我正在删除代码中的所有 cmets,并尝试为 JSON 文件/html/css/js 实现 Gzip 压缩。 JSON对象的示例粘贴在下面
{
"name": "TEST",
"state": "Lunch",
"time": "00:00:09",
"manager": "TEST",
"site": "C",
"skill": "TEST",
"center": "TEST",
"teamLead": "TEST",
"workGroup": "TEST",
"lanId": "TEST",
"dbID": "TETS",
"loginId": "TEST",
"avgAcwTime": "nn",
"avgHandleTime": "nn",
"avgTalkTime": "nn",
"callsAnswered": "nn",
"dispSkill": "-",
"errCode": null,
"errDesc": null,
"avgAcwTimeth": "medium",
"avgHandleTimeth": "high",
"avgTalkTimeTh": "medium",
"callsAnsweredTh": "medium",
"stateTh": "high"
}
由于某些要求,无法进行分页。 任何人都可以提出一些提高性能的建议
我也在使用 Backbone.Collection.fetch() 获取数据
getAgentMetric(){
this.metrices.fetch({
url : (isLocal) ? ('http://localhost:8080/jsons/agent.json') : (prev_this.url + '/agentstat'),
data: JSON.stringify(param),
type: "POST",
dataType: "JSON",
contentType: "application/json",
})
.done(function() {
// passing the datasource from ajax call
prev_this.agentLoacalSource.localdata = prev_this.metrices.toJSON();
});
timeout = setTimeout(_.bind(this.getAgentMetric, this), 5000);
},
【问题讨论】:
-
我有一个关于刷新数据的建议——您可以实施过滤器(检查更改的内容并仅发送这部分)。所以在前端你可以只更新改变的部分。
标签: json performance backbone.js backbone.js-collections