`

左侧菜单加载过慢问题

 
阅读更多
今天遇到一个左侧菜单加载了不到两分钟的问题,查看左侧菜单的源文件,竟然有14万行代码,其中90%是空行,于是我到tomcat的work目录下找到了该JSP对应的源文件,看到对应EL表达式下竟然有很多输出
out.write("<!-- 判断是否有该模块权限 -->\r\n");
            out.write("\t\t\t\t");
            if (_jspx_meth_c_005fset_005f9(_jspx_th_c_005fforEach_005f0, _jspx_page_context, _jspx_push_body_count_c_005fforEach_005f0))
              return;
            if (_jspx_meth_c_005fforEach_005f1(_jspx_th_c_005fforEach_005f0, _jspx_page_context, _jspx_push_body_count_c_005fforEach_005f0))
              return;
            out.write("<!-- 有该模块权限则展示 -->\r\n");
            out.write("\t\t\t\t");

由于加载的是菜单,所以会有多次循环,导致大量非显示空白。通过查找,网上基本是两种解决办法:
如果你是tomcat6的话很容易解决
在JSP页面中加入

<%@ page trimDirectiveWhitespaces="true" %>

这 个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的空格和空行)
如果你是tomcat5的话可以采用如下在tomcat中的全局配置
在server.xml中定义
[size=medium]
<servlet>  
<servlet-name>jsp</servlet-name>  
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
<init-param>  
<param-name>fork</param-name>  
<param-value>false</param-value>  
</init-param>  
<init-param>  
<param-name>trimSpaces </param-name>  
[/size]<param-value>true </param-value>  
</init-param>  
<init-param>  
<param-name>xpoweredBy</param-name>  
<param-value>false</param-value>  
</init-param>  
<load-on-startup>3</load-on-startup>  
</servlet>  
 

这个方案有个缺点,它会去掉所有jsp EL标签之间的空格的换行符,两个${}变量之间的空格也会消失。,在部分情况下也来带来不便。
你需要自己定义一个JSTL表示的空格符号要解决这个问题是相当麻烦,要引入一个只有一个空格的变量。 
<c:set var="one_space"> </c:set>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics