我的数据是通过jquery 的ajax 方法与后台java代码进行交互的。我在java代码里面做for训话,并用stringbuffer append来处理json数据生成一个table(1000行左右数据),并将这个table以字符串形式返回。页面我将放回的text文本用innerHTML的形式放到div自定的地方。 由于前台需要10秒或者15秒刷新,所以在ajax请求的时候就出现页面的其他操作不能够操作。
之前在前台也尝试用JavaScript来出来ajax返回来的json对象,在客户端生成table,这个效率更低。通常会导致客户端死机 不知道那位大侠有遇到这个问题或者有好的解决方案,帮小弟一下,不慎感激。
之前在前台也尝试用JavaScript来出来ajax返回来的json对象,在客户端生成table,这个效率更低。通常会导致客户端死机 不知道那位大侠有遇到这个问题或者有好的解决方案,帮小弟一下,不慎感激。
不用AJAX也有很多人会死机。同一楼意见,先分页。
但是你这种做法就是不对的:1,在服务端返回的应该是 JSON 数据,而不是已经组合成 HTML 的数据,HTML 的生成应该让客户端的浏览器去做这事;
2,返回一个 1000 行的表格,并且 10~15 秒刷新一次,这对客户端和服务端都是不小的压力。就以上而这个系统在设计上就存在缺陷,不慢是不可能的。如果用户多的话,那服务端的服务器等于在自我攻击。建议:用户肯定是看不了 1000 行数据的,可以让用户选择一些想看的数据,然后针对这些数据行进行刷新,这样做的话可以
免掉一些没人看的垃圾数据,可以在效率上提高很多。我想用户不可能时时地关心这 1000 行数据的。
至于后台是不是生成HTML代码,我到认为都可以。一般情况下,后台生成HTML代码,前台显示是会快一些。不过安装MVC的理念来说这样做是不太合理的。
另外就是看你的SQL语句是不是够有效了。这里由于用户的实时性比较高,所以我建议你不要用Hibernate,而改用Ibits或直接用JDBC来执行SQL。
2、使用此系统的人比较少,并且都是相关的责任人,所以不用考虑并发量。
3、我业务层所获取的json数据是调用一个httpserver得到的,而不是从数据库获取。 我现在打算在httpserver端生成table,我业务层调用httpserver返回的是一个table string 而不是json数据,这样我的业务层就不用 生成table了。不知道这样做回比我现在快多少?
用createDocumentFragment() ,createElement(),replaceChild()……取代innerHTML。
我觉得你值得优化的地方肯定包括你的客户端javascript。建议:最好先找到影响速度的地方,然后才能有所针对。
1000行数据堆在一页里谁看的下去
非得取1000条 可以在服务器端返回1000条数据的json串,再在js中作处理,别再json中加html语言,我原来做没问题呀
但是我现在强烈想知道你慢的地方是在哪里。
数据库返回结果慢?还是你生成一个字符串table慢?还是其他什么地方慢造成的。
这里提醒你一下。用StringBuilder会比stringbuffer 快,因为没有同步。
用createDocumentFragment() ,createElement(),replaceChild()……取代innerHTML。 速度会快一些,而且浏览器不会出现在运算时假死现象
如果是必须是1k+行的话,那问题不好解决1k+还好点,再多点的话,直接内存溢出了