前一段时间有反映说是一个使用了struts2的生产系统的页面显示速度太慢。登录后发现确实如此,于是进行了一番性能调优的研究和测试。
一,根据struts2官方的性能调优说明进行了一些参数的修改。
http://struts.apache.org/2.x/docs/performance-tuning.html
http://cwiki.apache.org/WW/performance-tuning.html
Turn off logging and devMode.(关闭logging和Devmode)
这个当然没问题,但是全部关闭logging不现实,我只是关闭了struts2相关package的logging
Do not use interceptors you do not need.
把struts.xml中不需要的interceptor统统删除
Use the correct HTTP headers (Cache-Control & Expires).
不确定应该如何修改
Copy the static content from the Struts 2 jar when using the Ajax theme (Dojo) or the Calendar tag.
关于这点,后面会提到
Create a freemarker.properties file in your WEB-INF/classes directory.
照做
Create the freemarker.properties file and add the following setting (or whatever value you deem fitting):
template_update_delay=60000
照做
Enable Freemarker template caching
As of Struts 2.0.10, setting the property struts.freemarker.templatesCache to true will enable the Struts internal caching of Freemarker templates. This property is set to false by default.
照做
进行上述修改后,发现页面打开的速度并没有明显的提高.
二,此时我已经基本锁定网页打开速度慢的原因与ajax(或者说是dojo)有关。因为dojo的js库大概有450K左右,先尝试使用gzip压缩javascript,减小传输量,看能否加快页面的加载速度
在Tomcat的server.xml的connector中添加如下配置,激活gzip功能
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript"
进行上述修改后,发现页面打开的速度还是没有明显的提高.
三,经过上述两个实验,觉得应该是struts2所封闭的dojo的性能问题了。于是引入JQuery.
JQuery的js文件最小是55K, gzip后应该更小,页面的响应速度明显改善(一个数量级以上的提高),主要原因在于与服务器交互的处理上极大地提升了效率。而且页面处理代码更加简洁明了。
最后,我删除了所有的<s:head theme="ajax"/>和 <s:head/>(如果页面中加入<s:head />,那么在Struts2生成的html中后包含dojo.js),使用JQuery来完成所有的Ajax和javascript功能。
分享到:
相关推荐
本文将根据给定文件的信息,深入探讨Struts2项目性能优化的三个关键步骤,旨在帮助开发者提升系统响应速度和用户体验。 ### 一、关闭不必要的日志记录与开发模式 Struts2在默认情况下开启的日志记录和开发模式虽然...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
精通Java EE:Eclipse Struts2 Hibernate Spring整合应用案例代码和数据库压缩包6
本教程将详细介绍如何部署一个基于Struts2的项目,特别适合初学者。由于实际的文件列表未给出,这里我们将假设它包含了必要的JAR库、源代码以及配置文件。 首先,理解Struts2项目的基本结构至关重要。一个典型的...
这个"Struts2项目代码"提供了一个学习Struts2框架的实用实例,可以帮助开发者更好地理解Struts2的核心概念和实践应用。 Struts2是Apache软件基金会下的一个开源项目,它是基于Model-View-Controller(MVC)设计模式...
使用Struts2核心jar包时,需要正确配置web.xml以启用Struts2框架,并在项目中引入相应的依赖。开发过程中,还需要理解并掌握Action、拦截器、结果类型等核心概念,以及如何利用配置文件进行定制化设置。同时,合理...
这个"Struts2项目实例"很可能是为了帮助开发者理解和掌握Struts2框架的实际应用。 首先,让我们深入了解一下Struts2框架的核心特性。Struts2是由Apache软件基金会维护的,它继承了Struts1的优点并解决了其不足,...
17. **性能优化**:提供Struts 2性能调优的技巧,包括配置优化、缓存策略、减少HTTP请求等。 18. **测试与调试**:讲解单元测试、集成测试在Struts 2项目中的应用,以及调试工具和技巧。 19. **最佳实践**:总结...
以下是对Struts2项目相关知识点的详细阐述: 1. **MVC架构**:MVC模式是软件设计中的经典模式,它将应用程序分为三个核心部分:模型(Model)负责数据处理和业务逻辑,视图(View)负责展示数据,控制器...
Java Web整合开发实战--基于Struts 2+Hibernate+Spring.pdf 1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 ...
近日,安恒信息安全研究院WEBIN实验室高级安全研究员Nike Zheng发现著名J2EE框架——Struts2存在远程代码执行的严重漏洞。目前Struts2官方已经确认漏洞(漏洞编号S2-045,CVE编号:cve-2017-5638),并定级为高危...
功能: ... 否则页面跳转到login.jsp页面等待用户输入; 此实例只适合对Struts2不了解的初学者. 工具:Eclipse+Tomcat 技术:Jsp,Struts2 步骤: 1. 创建web项目 2. 项目添加Struts2类...7. 部署和运行struts2项目
这个"使用struts2写的小项目"是一个模仿51job的网站,51job是国内知名的招聘网站,因此我们可以推测这个小项目是一个模拟招聘平台的Web应用。 **Struts2框架核心概念** 1. **Action类**:在Struts2中,Action类是...
- Struts2拥有丰富的插件库,如Struts2-dojo-plugin、Struts2-convention-plugin等,可以方便地集成第三方库。 7. **国际化与本地化**: - Struts2提供对多语言的支持,通过资源包(Properties文件)实现内容的...
在本“Struts2项目实例”中,我们将深入探讨如何使用Struts2框架来实现基本的CRUD(创建、读取、更新、删除)操作。 首先,Struts2的核心是Action类,它是业务逻辑处理的中心。在这个实例中,每个CRUD操作将对应一...
这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...
【标题】:“Hibernate+Struts2 项目源码”是一个基于流行Java开发框架的实践项目,旨在教授如何结合使用Hibernate对象关系映射框架与Struts2 MVC(模型-视图-控制器)框架来构建Web应用程序。 【描述】:这个项目...
Struts2是一个流行的Java Web应用程序框架,它与Maven结合使用可以大大提高开发效率和项目管理。Maven是一个项目管理和综合工具,它可以帮助我们自动化构建、依赖管理和项目信息管理。接下来,我们将深入探讨如何...
总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...
在本“Struts2框架模板”中,我们将探讨Struts2的基础知识、核心组件、配置文件、拦截器以及如何快速搭建一个基本的Struts2项目。 1. **Struts2基础** - **MVC模式**:Struts2遵循MVC模式,使得业务逻辑、数据模型...