二十万行JSP加载缓慢

文章讲述了在老项目中,通过避免在页面循环结构中使用操作元素的脚本,直接在服务器端拼接页面元素来提升性能。原来解析需要十分钟的页面现在能在五秒内完成,减轻了服务器压力,并建议使用JSON传递数据和前后端分离技术进一步优化。
摘要由CSDN通过智能技术生成

结论放在前边:

避免在页面的循环结构中使用脚本,尤其是操作页面元素的脚本。能直接在页面元素拼串过程中解决的,不要调用页面方法。

<table>
  <%  for(int i=0;i<length;i++){  %>
  <tr>
    <td>
<!--      一些内容-->
    </td>
    <script type="text/javascript">
<!--      查找获取元素,操作元素属性-->
    </script>
  </tr>
  <%  }  %>
  
</table>

问题过程:

发现问题:

老项目使用的是JSP,有个可变长表是年报,数据量达到千条以上,jsp解析后的html文件有二十万行。最开始以为页面太大导致的页面渲染慢。后来发现另外两个近乎相同的相同行数的页面,数据传输完成后加载的很快,对比发现是少了散布在页面中的脚本,主要是对页面元素的checked属性 和disabled属性进行修改。故,推测性能主要消耗在页面元素的查找和操作中。

解决问题

发现问题根源后,就很好解决了。
在对循环体中,删除各函数调用,将各函数调用的结果直接在页面元素拼串中予以体现。

继续优化

jsp直接在服务器处理,拼接处十万行级的页面,压力较大。尝试改为json传递数据,js代码中拼串使用

$("#tableId").append($.parseHTML(htmlText));

成果

原页面,谷歌十分钟才能解析完成,ie在数据量将近八十时已经崩溃。
现在,谷歌可以在五秒内完成,ie则需要二十多秒。且因为循环元素由浏览器在添加,服务器压力大大减小。

结语:

现在都是前后端分离,vue什么的,这老掉牙的技术早都没人用了吧。写下来留给有缘人吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值