我的数据是通过jquery 的ajax 方法与后台java代码进行交互的。我在java代码里面做for训话,并用stringbuffer append来处理json数据生成一个table(1000行左右数据),并将这个table以字符串形式返回。页面我将放回的text文本用innerHTML的形式放到div自定的地方。 由于前台需要10秒或者15秒刷新,所以在ajax请求的时候就出现页面的其他操作不能够操作。
    之前在前台也尝试用JavaScript来出来ajax返回来的json对象,在客户端生成table,这个效率更低。通常会导致客户端死机    不知道那位大侠有遇到这个问题或者有好的解决方案,帮小弟一下,不慎感激。

解决方案 »

  1.   

    怎么在服务端生成 HTML 代码啊?服务端仅生成 JSON 数据返回到页面上使用 JavaScript 处理成表格。1000 行的表格,得使用分页!
      

  2.   

    1000行数据的TABLE
    不用AJAX也有很多人会死机。同一楼意见,先分页。
      

  3.   

    要对这个table里面的数据的进行监控,客户要求不能够分页的
      

  4.   


    但是你这种做法就是不对的:1,在服务端返回的应该是 JSON 数据,而不是已经组合成 HTML 的数据,HTML 的生成应该让客户端的浏览器去做这事;
    2,返回一个 1000 行的表格,并且 10~15 秒刷新一次,这对客户端和服务端都是不小的压力。就以上而这个系统在设计上就存在缺陷,不慢是不可能的。如果用户多的话,那服务端的服务器等于在自我攻击。建议:用户肯定是看不了 1000 行数据的,可以让用户选择一些想看的数据,然后针对这些数据行进行刷新,这样做的话可以
    免掉一些没人看的垃圾数据,可以在效率上提高很多。我想用户不可能时时地关心这 1000 行数据的。
      

  5.   

    恩。我比较火龙果这里说的。我觉得至少应该让用户指出他们感兴趣的数据。比如:当某个值到达一个什么程度的时候就显示出来。其他没有用的就先不显示了。
    至于后台是不是生成HTML代码,我到认为都可以。一般情况下,后台生成HTML代码,前台显示是会快一些。不过安装MVC的理念来说这样做是不太合理的。
    另外就是看你的SQL语句是不是够有效了。这里由于用户的实时性比较高,所以我建议你不要用Hibernate,而改用Ibits或直接用JDBC来执行SQL。
      

  6.   

    说明:1、所有的数据对于用户来说都是一样重要的。
          2、使用此系统的人比较少,并且都是相关的责任人,所以不用考虑并发量。
          3、我业务层所获取的json数据是调用一个httpserver得到的,而不是从数据库获取。      我现在打算在httpserver端生成table,我业务层调用httpserver返回的是一个table string 而不是json数据,这样我的业务层就不用  生成table了。不知道这样做回比我现在快多少?
      

  7.   

    请问:前台、客户端与后台分别指啥东东?客户端不要用innerHTML,用这个东西很耗时的。
    用createDocumentFragment() ,createElement(),replaceChild()……取代innerHTML。
    我觉得你值得优化的地方肯定包括你的客户端javascript。建议:最好先找到影响速度的地方,然后才能有所针对。
      

  8.   

    不管你是在服务器端生成HTML还是在客户端生成,都应该分页
    1000行数据堆在一页里谁看的下去
      

  9.   

    你不能 一次去50条记录吗 
    非得取1000条 可以在服务器端返回1000条数据的json串,再在js中作处理,别再json中加html语言,我原来做没问题呀
      

  10.   

    如果返回Json在页面循环显示的话,是比你现在直接返回Table慢的。
    但是我现在强烈想知道你慢的地方是在哪里。
    数据库返回结果慢?还是你生成一个字符串table慢?还是其他什么地方慢造成的。
    这里提醒你一下。用StringBuilder会比stringbuffer 快,因为没有同步。
      

  11.   

    同意楼上chief_fu 的说法,不要用innerHTML,用这个东西很耗时的。 
    用createDocumentFragment() ,createElement(),replaceChild()……取代innerHTML。 速度会快一些,而且浏览器不会出现在运算时假死现象
      

  12.   

    都是在前台生成这一千行代码的javascript导致的卡死现象
    如果是必须是1k+行的话,那问题不好解决1k+还好点,再多点的话,直接内存溢出了