Ajax问题:使用innerHTML延迟从Web服务获取数据,请指导

时间:2010-09-14 13:45:11

标签: javascript asp.net ajax

我正在开发一个ajax应用程序,它将在html表中显示大约一百万条记录。 Web服务从服务器返回记录,我通过连接数据和标签来构建一个logn字符串,而不是使用innerHTML来放置这个字符串(不使用DOM来获得更好的性能)。

为了进行测试,我已将6000个recods放入数据库中(存储过程在完成执行时大约需要4秒)。

在本地系统(同一台机器上的数据库和应用程序)上进行测试时,在页面中显示记录大约需要5分钟。在使用Web服务器后,它甚至没有响应更多时间。它看起来性能很低。我将记录放在CSV文件中,其重量小于2 MB。我无法理解为什么字符串连接构建html表并在innerHTML中放置字符串需要花费如此巨大的时间(如果是问题)。 Requiment是在网页上显示大约百万条记录,但仅有6000条记录的表现令人失望。我不知道如何提高绩效。

请指导我并帮助我。

2 个答案:

答案 0 :(得分:3)

您是否尝试在一个页面上显示一百万条记录?无论你如何优化你的服务器代码,这都是很多要解析/渲染的html,特别是如果它在表中。

即使使用.innerHTML也不会随时“拯救”你。渲染引擎仍然需要解析/样式化/渲染/定位数百万个表行/单元格,你必须等待它的工作。

如果您绝对必须在单个页面上显示所有这些记录,请尝试将其分解为可管理的块。让AJAX调用一次返回(说)100条记录,将它们放入表中,然后获取另外100条记录等等。至少这样你会看到页面内容增长,而不是必须坐下在那里等待1,000,000个表行一次显示。

更好的选择是进行分页,其中一次只显示100条记录,并且您使用<<<< first / prev / next / last>>用于交换数据“页面”的按钮。

答案 1 :(得分:1)

正如马克所说,你需要分页。看看这是否有帮助 - How do I do pagination in ASP.NET MVC?

除此之外,您还可以通过使用主 - 详细模式来优化结果 - 仅获取记录(主)的摘要以及主数据中的某些操作,获取详细信息并在屏幕上显示。这将减少从服务器传输的数据的大小。