`
zfwdl2005
  • 浏览: 238353 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2性能优化

 
阅读更多
struts2性能优化方案考虑struts2在mvc框架中性能低下的问题,struts2的性能优化方案就此诞生了!:


1. 关闭logging和开发模式(devMode), devMode是在struts.properties中设置的, 关闭logging需要修改web.xml文件,加入以下参数

<servlet>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>0</param-value>
</init-param>
</servlet>

2. 除非需要,否则不要使用拦截器(interceptor).

        如果一个Action不需要全栈的拦截器的话,就使用basicStack拦截器或移除不需要的拦截器。


3. 正确设置页面的Cache-Control 和 Expires

      使用正确的HTTP头(缓存控制和过期时间)


      当返回一个html页面的时候,要保证html页面包含正确的header,使得浏览器可以知道怎样缓存该html页面。


4. struts2提供的Ajax theme(Dojo)或者Calendar标签默认情况下保存在struts.jar包里面, 把这些js文件或者css文件拷出来放到另外一个服务器上可以提高性能。

      当使用AJAX theme(Dojo)或日历tag时,从Struts2的jar包复制静态内容到http服务器。
      因为http服务器会对这些静态文件的请求进行优化

5. 如果使用freemarker的话,在WEB-INF下的classes文件夹下创建一个freemarker.properties并且加入
template_update_delay=60000, 这个值是freemarker多久从硬盘重新载入模板,默认情况下是500ms, 因为没有必要检查是不是需要重新载入模板文件,所以最好把它设置为一个很大的数字。

6.启用Freemarker 模板缓存, 这是struts.freemarker.templatesCache为true, 默认情况下这个是false的。

7. 当覆盖一个theme时,copy所有重要的模板到theme目录


当template在当前目录不能发现时,会有性能开销。因为在返回父模板前,struts2必须在当前目录进行theme检查. 晚先时候,这个缺陷将要通过一个 template缓存解决。

8.在你需要的时候才创建session

除非需要,Struts2不会创建sessions(比如,在你的拦截器stack中有createSession拦截器)。注意当使用SiteMesh时, 一个session将总是被创建(看看http://forums.opensymphony.com /thread.jspa?messageID=5688的描述).

9.当使用FreeMarker时,尽量使用等价的FreeMarker元素,代替JSP的标签。


    Freemarker支持list迭代, 显示属性,包含其他模版, macro's等等.使用等价的FreeMarker元素代替struts2的tags 会有小的性能提升。 (例如:<s:property value="foo"/>将要被${foo}代替).




1 struts2.3.4.1.jar,xwork-core-2.3.4.jar,freemarker 升级为2.3.19

2 ognl 升级为 3.0.5(+javassist-3.11.0.jar)

3 根包下增加freemarker.properties文件,内容为template_update_delay=60000

4 struts.xml增加<constant name=”struts.devMode” value=”false”/>和<constant name=”struts.freemarker.templatesCache” value=”true”/>

5 把struts.xml中的默认拦截器定义为basicStack:




<package name="web" extends="tiles-default"> 

     <default-interceptor-ref name="basicStack" /> 

</package>

 

执行了这几步之后,网站性能从5 req/s提升至70 req/s,请求处理时间从22s/req缩减至2s/req!

分享到:

相关推荐

    struts2项目性能调优三步曲.txt

    本文将根据给定文件的信息,深入探讨Struts2项目性能优化的三个关键步骤,旨在帮助开发者提升系统响应速度和用户体验。 ### 一、关闭不必要的日志记录与开发模式 Struts2在默认情况下开启的日志记录和开发模式虽然...

    Struts Spring Hibernate性能优化

    在进行大型项目开发时,性能优化是至关重要的,特别是对于基于SSH(Struts、Spring、Hibernate)这样的企业级框架的应用。SSH性能优化主要是针对Struts的MVC处理、Spring的依赖注入以及Hibernate的对象关系映射进行...

    Struts2实战

    5. Struts2框架的优化:在使用Struts2框架进行Web开发的过程中,开发者需要注意一些性能优化的问题。例如,可以通过合理的配置Action缓存,减少Action的创建和销毁,提高系统的性能。同时,也可以通过合理的配置结果...

    Struts 2实战 struts2 in Action

    - **性能优化**:Struts 2在内存管理和缓存机制等方面进行了优化,提高了整体性能。 - **国际化支持**:Struts 2内置了对多语言的支持,使得创建多语言的应用程序变得更加简单。 ### 实战应用案例 为了更好地理解...

    struts2 学习重点笔记

    **5.1 性能优化** - **减少 Action 调用**:合理设计 Action,避免不必要的多次调用。 - **缓存策略**:利用缓存机制减少数据库查询次数。 **5.2 安全性增强** - **输入验证**:确保所有输入数据经过严格的验证。 -...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software ...尽管 Struts2 在某些方面仍存在挑战,如性能优化和学习曲线,但其综合优势使其成为很多开发者在构建企业级应用时的首选框架之一。

    不同版本的 struts2.dtd

    Struts2 是一个非常流行的Java Web应用程序框架,用于构建企业级的应用。它的核心是基于Model-View-Controller(MVC)设计模式,帮助开发者更好地组织和管理代码,提高开发效率。在Struts2中,DTD(Document Type ...

    Struts2实战(Struts2 In Action中文版)

    10. **最佳实践与性能优化**:分享Struts2开发中的最佳实践,如何优化应用性能,避免常见陷阱。 此外,书中还包含大量实例和案例研究,帮助读者在实际项目中应用所学知识。《Struts2 In Action中文版》是一本全面、...

    Struts1和Struts2区别

    - **Struts2**:通过拦截器和更优化的设计,性能通常优于Struts1。 总结起来,Struts2在设计和功能上都比Struts1有所改进,提供了更好的灵活性、可扩展性和易用性。然而,这并不意味着Struts1没有它的价值,对于...

    struts2-src

    深入研究Struts2源码,开发者可以更清楚地理解框架的工作原理,从而优化应用性能,解决实际问题,甚至为框架贡献代码。通过分析源码,我们可以学习到如何设计一个高性能、可扩展的MVC框架,这对提升Java Web开发技能...

    struts2相关书籍

    它可能还会讲解如何调试Struts2应用,优化性能,以及安全问题,比如XSS和CSRF防护。 《Struts+2.pdf》: 书名中的"+"可能表示该书涵盖了Struts2的最新版本或与其他技术(如Spring、Hibernate)的结合。这可能涉及到...

    struts2 lib包

    Struts2是一个非常著名的Java Web开发...在实际开发中,根据项目需求,可以选择性地引入和配置这些库,以优化应用性能和功能。同时,定期更新这些库到最新版本也是很重要的,因为它们通常会修复安全漏洞和提供新特性。

    Struts2项目代码

    通过这个"Struts2项目代码"实例,你可以学习如何配置Struts2框架,编写Action类,使用拦截器,理解MVC设计模式在实际项目中的运用,以及如何调试和优化Struts2应用。同时,它还能帮助你熟悉Struts2与其他技术(如...

    Struts2 2.3.34jar

    Struts2是一个基于MVC...总的来说,Struts2 2.3.34 jar包是开发和维护Struts2应用的基础,它提供了框架的核心功能、更新的安全补丁以及更好的性能优化。通过合理使用和配置,可以构建高效、稳定且安全的Web应用程序。

    struts2常量详解

    通过理解并正确配置这些常量,开发者能够更精细地控制Struts2的行为,优化应用程序的性能和功能。例如,通过调整`struts.multipart.maxSize`可以防止因文件过大导致的服务器崩溃,而选择合适的`struts.multipart....

    Migrating From Struts1 To Struts2

    - **性能提升**:Struts2在执行效率方面进行了优化,能够更好地处理高并发请求。 - **功能增强**:Struts2引入了更多的内置特性,如拦截器、结果类型等,减少了自定义组件的需求。 - **安全性改善**:Struts2提供了...

    struts2框架模板

    7. **性能优化** - ** strut2-convention-plugin**:使用约定优于配置,减少XML配置。 - **Caching Interceptor**:缓存拦截器,提高性能。 - **异步Action**:利用Struts2的异步特性,提高响应速度。 8. **安全...

    struts2-docs

    Struts2是一个强大的...此外,文档还会详细介绍如何利用Struts2的特性来优化性能,提高应用的安全性和可扩展性。对于初学者和经验丰富的开发者来说,"struts2-docs"都是理解和应用Struts2框架的不可或缺的参考资料。

    Struts2源码分析

    Struts2是一个流行的Java web应用程序框架,它源自Struts1.x和WebWork的结合,具有稳定性和高性能。在深入理解Struts2的工作原理时,源码分析是必不可少的步骤。Struts2的核心设计理念和设计模式相比Struts1.x有了...

    struts2从2.3.26升级2.3.34的文档

    从2.3.26升级到2.3.34是一个常规的版本更新过程,旨在获取新版本中的安全修复、性能优化和功能增强。以下是对这个升级过程的详细解析: 1. **升级前准备**: - **备份**:在开始升级之前,确保备份现有的项目代码...

Global site tag (gtag.js) - Google Analytics