请教:大耗时JS执行时,页面卡住的问题

sd3560531 2011-04-06 02:04:00
我的效果是这样的:
在IE8上,页面上每隔10秒要到后台数据库查询数据,并把每条数据更新到页面上,页面数据要滚动循环显示,数据的条数不确定。

我的实现方式是:
使用setInterval,定时周期执行一个函数,在函数中通过AJAX调用后台,并返回数据的XML档格式字串。然后用JS解析这个字串,构造要添加到页面的TR,TD元素,然后放到一个table中。

问题是:
现在每次调用要耗时约2秒钟,后台消耗大约0.5秒,其他主要消耗在JS解析传回字符串和 构造TR,TD元素并添加到table中。在这两秒中,页面的滚动效果会停顿,而且也不能切换到其他标签页面。

请问有什么好方法去掉这种停顿呢?
...全文
858 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyroom1 2011-04-06
  • 打赏
  • 举报
回复
楼主有不有试过缓存
第一次查询出来后结果,用缓存接受。
以后每次只要 与缓存的结果比较。有区别就更新,没有区别不要修改。这样应该很快的。
zq8115483 2011-04-06
  • 打赏
  • 举报
回复
其实你可以用iframe嵌套一个jsp 然后 父页面每个10秒提交一下iframe的form 这样简单很多 而且逻辑上海游分层效果
veardn 2011-04-06
  • 打赏
  • 举报
回复
建议不要用table,用div速度应该会快些
sd3560531 2011-04-06
  • 打赏
  • 举报
回复
首先谢谢大家。

关于AJAX的同、异步调用。由于大部分时间消耗在AJAX调用后,对结果的处理,因此设置同、异步效果不明显。

为什么每次要拼接TR,TD。因为每次数据条数不确定。另外每条数据变动的地方也很多,如果不是每次重新构造TR,TD,会变得很复杂。

页面上的元素操作我也没有用DOM,都是拼接字符串再用Jquery.html(str)放里面的。
Mr-Jee 2011-04-06
  • 打赏
  • 举报
回复
请参考
http://topic.csdn.net/u/20101219/14/987dd6f0-fe25-4bbe-8f06-5b89cbf3e3f4.html
clarck_913 2011-04-06
  • 打赏
  • 举报
回复
1、建议数据用JSON,XML貌似数据量会大一些
2、页面上的元素操作不要用DOM,建议拼字符串然后放到innerHTML里
ycproc 2011-04-06
  • 打赏
  • 举报
回复
你用 异步的 慢慢加载
Atai-Lu 2011-04-06
  • 打赏
  • 举报
回复
setInterval后有没有clearInterval???

TR,TD这类东西为啥每次都要拼接呢?
hongmei85 2011-04-06
  • 打赏
  • 举报
回复
在ajax中提交有两种形式:同步和异步
xmlHttp.open( "GET ", url, true);//xmlHttp.open( "GET ", url, false);

同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码
异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧