代码之家  ›  专栏  ›  技术社区  ›  Chris Sobolewski

在不刷新的情况下更新站点(大量数据)的最有效方法是什么?

  •  0
  • Chris Sobolewski  · 技术社区  · 15 年前

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

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

    我首先尝试使用for循环来更新所有字段,并对数据库进行一系列同步的Ajax查询。这导致了一个巨大的悬空。我会说,在更新之间的30秒中,有20秒页面被冻结。

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

    目前我有一个back-end.asp页面来编写HTML,并清除包含DIV的innerhtml,然后设置div.innerhtml=transport.responsetext。这对我来说似乎很有效,但我只是好奇,如果有可用的工具(vbscript、javascript和一个Access数据库),其他人会如何更新这么多的数据。

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Peter    15 年前

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

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

    POR实例:

    假设服务器以这种方式提供数据: 12234564423122324131331135443…

    然后在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];
    }
    

    就是这样。

        2
  •  0
  •   Brian M. Hunt    15 年前

    用户期望如何与页面交互?多个用户将同时处理同一数据吗?他们是否希望看到彼此的结果?您标记了这个ASP.NET,但只提到能够使用vbscript、javascript和access-这个ASP.NET怎么样?

    编辑:

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