Struts 2
  1. Struts 2
  2. WW-3467

Improve performance for page rendering by refactoring freemarker cache

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.1.5, 2.1.6, 2.1.8, 2.1.8.1
    • Fix Version/s: 2.2.1
    • Component/s: None
    • Labels:
      None
    • Flags:
      Patch, Important

      Description

      currently,struts2 have two inconsistent options about freemarker cache
      1.<constant name="struts.freemarker.mru.max.strong.size" value="250" />
      this option will used by freemarker.cache.MruCacheStorage

      2.<constant name="struts.freemarker.templatesCache" value="true" />
      this option will use a internal ConcurrentHashMap in FreemarkerTemplateEngine but not freemarker native cache
      my patch deprecated this option and clean those code

      also add a option to change default update cache interval (5 seconds)
      <constant name="struts.freemarker.templatesCache.updateDelay" value="1800" />

      BTW:set devMode to true will disable cache and update immediately

      using cache will boost great performance, reduce 400ms to 20ms render a xhtml theme form and some textfield in my test .

      I think https://issues.apache.org/jira/browse/WW-2808 could closed by adding a wiki page about how to use freemarker cache

      1. patch.txt
        11 kB
        zhouyanming

        Issue Links

          Activity

          Hide
          Philip Luppens added a comment -

          Interesting - am I correct when I say this means the caching was not working correctly for the internal Freemarker configuration? That would certainly explain the massive difference in performance we noticed when rendering UI tags.

          Show
          Philip Luppens added a comment - Interesting - am I correct when I say this means the caching was not working correctly for the internal Freemarker configuration? That would certainly explain the massive difference in performance we noticed when rendering UI tags.
          Hide
          Lukasz Lenart added a comment -

          It can be, I was looking into FreemarkerTemplateEngine when this issue was registered and it looks like cache was enabled for FTE itself to cache loaded FTL template files.

          Show
          Lukasz Lenart added a comment - It can be, I was looking into FreemarkerTemplateEngine when this issue was registered and it looks like cache was enabled for FTE itself to cache loaded FTL template files.
          Hide
          Lukasz Lenart added a comment -

          Patch committed, thanks!

          Show
          Lukasz Lenart added a comment - Patch committed, thanks!
          Hide
          lefebvre added a comment -

          With this new option, is it necessary to keep thé freemarker.proprties With template_update_delay=60000
          ?

          Show
          lefebvre added a comment - With this new option, is it necessary to keep thé freemarker.proprties With template_update_delay=60000 ?

            People

            • Assignee:
              Lukasz Lenart
              Reporter:
              zhouyanming
            • Votes:
              2 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development