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里面不支持三目运算符,如果要使用请参考如下格式:
普通用户 商家 普通管理员
发表评论