• 模板拷贝【便利贴】Struts性能优化


    本文是一篇关于模板拷贝的帖子

        The following are some tips and tricks to squeeze the most performance out of Struts 2.

        

    模板和拷贝 Important OGNL update
    For Struts 2 versions before 2.3: the OGNL version 3.0.3 library is a drop-in replacement for older OGNL jars, and provides much better performance. See the following Jira issue for more information:https://issues.apache.org/jira/browse/WW-3580

        

    Turn off logging and devMode.   关掉志日与开辟式模

        devMode allows reloading of configuration and validation related files, but because they happen on each request, this setting will totally kill your performance.
    When using logging, make sure to turn off logging (esp. Freemarker generates a LOT of logging), and check if a level is enabled before printing it, or you will get the cost of the String parsing/concatination anyways.

        

    Use the Java Templates  应用Java模板

        If you use the simple theme, and do not overwrite any of the FreeMarker templates, consider using the java templates, which provide a drop in replacement for most tags, and are a lot faster than the regular tags.

        

    Do not use interceptors you do not need. 不要应用拦截器,除非你真的要需

        If you do not require a full stack of interceptors for an Action, then try using a different one (basicStack), or remove interceptors you do not need. Remove the I18nInterceptor interceptor if you don't need it, as it can cause a session to be created.

        

    Use the correct HTTP headers (Cache-Control & Expires). 返回应用准确的HTML头部

        When returning HTML views, make sure to add the correct headers so browsers know how to cache them.

        

    Copy the static content from the Struts 2 jar when using the Ajax theme (Dojo) or the Calendar tag.拷贝struts jar包静态文件出来

        Struts 2 uses some external javascript libraries and cascading stylesheets for certain themes and tags. These by default are located inside the Struts 2 jar, and a special filter returns them when requesting a special path (/struts). Although Struts 2 can handle these requests, an application/servlet container is not optimized for these kind of requests. Consider moving these .js and .css files to a seperated server (Lighttpd, Apache HTTPD, ..).

        每日一道理
    “多难兴才”曾一度被人定为规律。请看:屈原被放逐而作《离骚》;司马迁受宫刑而作《史记》;欧阳修两岁丧父笃学而成才;曹雪芹举家食粥而写出了不朽的《红楼梦》;越王勾践卧薪尝胆而雪洗国耻;韩信遭胯下辱而统率百万雄兵……他们都是在与逆境搏斗中成为伟人的!

        

    Create a freemarker.properties file in your WEB-INF/classes directory. 置设freemarker.properties模板更新延时间时

        Create the freemarker.properties file and add the following setting (or whatever value you deem fitting):

    template_update_delay=60000
    

    This value determines how often Freemarker checks if it needs to reloads the templates from disk. The default value is 500 ms. Since there is no reason to check if a template needs reloading, it is best to set this to a very large value. Note that this value is in seconds and freemarker will convert this value to milliseconds.

        See also: Freemarker configuration properties

        

    Enable Freemarker template caching  关闭Freemarker模板缓存

        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.

        In Struts versions prior to 2.0.10, you had to copy the /template directory from the Struts 2 jar in your WEB_APP root to utilize Freemarker's built in chaching mechanism in order to achieve similar results.

        The built in Freemarker caching mechanism fails to properly cache templates when they are retrieved from the classpath. Copying them to the WEB_APP root allows Freemarker to cache them correctly. Freemarker looks at the last modified time of the template to determine if it needs to reload the templates. Resources retrieved from the classpath have no last modified time, so Freemarker will reload them on every request.

        

    When overriding a theme, copy all necessary templates to the theme directory. 盖覆主题时,拷贝所以模板(含父模板)

        There's a performance cost when a template cannot be found in the current directory. The reason for this is that Struts 2 must check for a template in the current theme first before falling back to the parent theme. In the future, this penalty could be eliminated by implementing a missing template cache in Struts 2.

        

    Do not create sessions unless you need them.不要创立Session,除非你要需,国际化拦截器会创立Session

        Struts 2 does not create sessions unless asked to (for example, by having the createSession interceptor in your interceptor stack). Note that when you use SiteMesh however, a session will always be created (Seehttp://forums.opensymphony.com/thread.jspa?messageID=5688 for details). The I18nInterceptor interceptor can create sessions, so make sure you remove it, if you don't need it.

        

    When using Freemarker, try to use the Freemarker equivalent rather than using the JSP tags.应用模板时用采${}式方

        Freemarker has support for iterating lists, displaying properties, including other templates, macro's, and so on. There is a small performance cost when using the S2 tags instead of the Freemarker equivalent (eg. <s:property value="foo"/> should be replaced by ${foo}).

    文章结束给大家分享下程序员的一些笑话语录: 看新闻说中国输入法全球第一!领先了又如何?西方文字根本不需要输入法。一点可比性都没有。

  • 相关阅读:
    C#操作SQLite 报错 (Attempt to write a readonly database)
    JS判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
    JueryUI插件的简单应用(一):介绍及第一个示例
    在VS2008(Winform)中使用WebService
    Oracle触发器使用
    C# 创建Windows服务。服务功能:定时操作数据库
    aspnet前后台条件下根目录的读取
    xshell实现端口转发
    (转)使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
    D3D坐标系统和几何DirectX Griaphic学习
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3067488.html
Copyright © 2020-2023  润新知