更新站点(大量数据)而不刷新的最有效方法?

时间:2009-09-19 01:21:29

标签: javascript vbscript dynamic-data

我正在开发一个Web项目,需要从多个用户和大量数据中进行相当多的更新。

预期的数据量是70个唯一行,每行有14个需要定期更新的字段。这总共有980个字段。

我首先使用for循环尝试对数据库进行一系列同步ajax查询以更新所有字段。这造成了很大的影响。我会说在更新之间的30秒内20秒,页面被冻结了。

下一次尝试是异步运行ajax查询,onsuccess更新for循环中的字段。这缓解了减速,但我遇到了奇怪的问题。我认为我的for循环变量导致事情被写入错误的HTML元素。

目前我正在使用后端.asp页面编写HTML,并清除包含div的innerHTML,然后设置div.innerHTML = transport.responseText。这似乎对我来说非常好用,但我很好奇其他人在给出可用工具(vbscript,javascript和Access数据库)的情况下更新这些数据会做些什么。

所有工作站的数据都是相同的,多个用户将实时交互编辑数据。但是,他们每个人都会关注更新他们自己的数据部分,但是需要让所有用户在最新的迭代中都可以更新和查看。

2 个答案:

答案 0 :(得分:1)

包含1000个字段的HTML表格不是“大量数据”。

如果您为每个单元格提供ID并使用JSON或简单CSV获取数据,然后使用javascript更新所有数据,则会更快,因为浏览器不需要重绘表格并创建新的DOM结构。

例如:

想象一下,服务器以这种方式为您提供数据: 12,234,564,423,1223,2413,133,113,5443 ...

然后在javascript中你可以:

var data = responseText.split(',');

然后填写表格(假设表格单元格的ID名称如CELL_0,CELL_1,CELL_2 ......)。

for (i=0; i<data.length; i++) {
  document.getElementById('CELL_'+i).innerHTML=data[i];
}

就是这样。

答案 1 :(得分:0)

用户希望如何与该网页进行互动?多个用户是否会同时处理相同的数据,他们是否希望看到彼此的结果?你标记了这个asp.net但提到只能使用vbscript,javascript和访问 - 这个asp.net怎么样?

编辑:

感谢您的澄清。在每行上有一个编辑/保存按钮有帮助吗?行将是只读的,直到用户需要编辑他们的数据(我假设他们正在编辑每一行)数据将刷新并且该行将被锁定以供任何其他用户编辑。用户完成后,单击“保存”并更新其数据,解锁行,并刷新页面数据。您还可以将ajax设置为每隔几分钟运行一次,以便在用户未进行主动编辑时获取最新信息。此外 - 根据数据的结构方式 - 您应该只需要获取自上次更新用户页面以来已更改的数据。无需每次都获得一切。您的更新也应该很小,仅限于他们正在编辑的用户行上的数据。