FreeMarker实践总结

【1】FreeMarker 的缓存

FreeMarker 的缓存处理主要用于模版文件的缓存。一般来讲,模版文件改动不会很频繁,在一个流量非常大的网站中,如果频繁的读取模版文件对系统的负担还是很重的。

因此 FreeMarker 通过将模版文件的内容进行缓存,来降低模版文件读取的频次,降低系统的负载。

当处理某个模版时,FreeMarker直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件同步的。

如果使用 FreemarkerServlet 时,有一个配置项template_update_delay用来指定更新模版文件的间隔时间,相当于多长时间检测一下是否有必要重新加载模版文件,0 表示每次都重新加载,否则为多少毫秒钟检测一下模版是否更改。

template_update_delay=0

FreeMarker定义了一个统一的缓存处理接口CacheStorage,默认的实现是 MruCacheStorage 最近最少使用的缓存策略。

一般情况下,很少需要对缓存进行扩展处理。可以通过下面的代码指定最大缓存的模版数:

cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20, 250))

其中第一个参数是最大的强引用对象数,第二个为最大的弱引用对象数。

这两个值FreeMarker默认的是0和 Integer.MAX_VALUE,表明模版缓存数是无限的


【2】SpringMVC禁用缓存配置

①先设置springmvc的缓存控制。

这是最高优先级的缓存控制。一旦springmvc发现没有缓存开启,就会进行cache。如果发现缓存没开启,则会每次生成一个view(通过调用freemarker的方法来进行)。

   
        
        
        
        
         
        
        
        
        
    

② 再设置freemakre的缓存控制。

freemakre通过一个时间长度来控制缓存。

  
          
          
              
                0  
                 UTF-8  
                zh_CN  
                yyyy-MM-dd HH:mm:ss  
                yyyy-MM-dd  
                #.##  
              
          
    

这里关键是设置 template_update_delay 为0 ,0标示不检测模板,每次都重新载入。

【3】Freemarker常见应用实践

① Freemarker实现三目运算符

Freemarker里面不支持三目运算符,如果要使用请参考如下格式:


普通用户
商家
普通管理员

发表评论