开发者社区 问答 正文

FreeMarker 缓存处理 FreeMarker 缓存处理:报错

FreeMarker 缓存处理

FreeMarker 的缓存处理主要用于模版文件的缓存,一般来讲,模版文件改动不会很频繁,在一个流量非常大的网站中,如果频繁的读取模版文件对系统的负担还是很重的,因此 FreeMarker 通过将模版文件的内容进行缓存,来降低模版文件读取的频次,降低系统的负载。

当处理某个模版时,FreeMarker 直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件同步的。如果使用的时候 FreemarkerServlet 时,有一个配置项 template_update_delay 用来指定更新模版文件的间隔时间,相当于多长时间检测一下是否有必要重新加载模版文件,0 表示每次都重新加载,否则为多少毫秒钟检测一下模版是否更改。

FreeMarker 定义了一个统一的缓存处理接口 CacheStorage ,默认的实现是 MruCacheStorage 最近最少使用的缓存策略。一般情况下,很少需要对缓存进行扩展处理。您可以通过下面的代码指定最大缓存的模版数:cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20, 250))

其中第一个参数是最大的强引用对象数,第二个为最大的弱引用对象数。这两个值 FreeMarker 默认的是 0 和 Integer.MAX_VALUE,表明模版缓存数是无限的


参考:

1.http://aixiangct.blog.163.com/blog/static/915224612011413113013687/


------------------------------

1.对缓存不是很懂

2.希望大家继续补充

展开
收起
kun坤 2020-06-07 14:32:35 709 分享 版权
1 条回答
写回答
取消 提交回答
  • 问题提出:

    @红薯 你好,想跟你请教个问题:

    现在正在为公司做开发框架,大概的做法是使用Freemarker的宏,生成ExtJS的界面代码。比如<@button text='btnTest' text='按钮'/>,当然还有更复杂的嵌套的宏,比如:<@gird />等。这样的话有的界面会变得比较复杂。请问Freemarker可以缓存吗

    中国学网其他用户对此信息的回答或评论:

    ===========================================================================================
    Andre.Z 回答于 2012-08-01 15:20 

    freemarker也只是缓存模板。
    你要缓存输出的数据内容,用别的缓存框架吧。


    ===========================================================================================
    opal 回答于 2012-08-01 16:13 
    可以######

    1.参考:http://www.ibm.com/developerworks/cn/java/j-lo-freemarker/


    FreeMarker 缓存处理

    FreeMarker 的缓存处理主要用于模版文件的缓存,一般来讲,模版文件改动不会很频繁,在一个流量非常大的网站中,如果频繁的读取模版文件对系统的负担还是很重的,因此 FreeMarker 通过将模版文件的内容进行缓存,来降低模版文件读取的频次,降低系统的负载。

    当处理某个模版时,FreeMarker 直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件同步的。如果使用的时候 FreemarkerServlet 时,有一个配置项 template_update_delay 用来指定更新模版文件的间隔时间,相当于多长时间检测一下是否有必要重新加载模版文件,0 表示每次都重新加载,否则为多少毫秒钟检测一下模版是否更改。

    FreeMarker 定义了一个统一的缓存处理接口 CacheStorage ,默认的实现是 MruCacheStorage 最近最少使用的缓存策略。一般情况下,很少需要对缓存进行扩展处理。您可以通过下面的代码指定最大缓存的模版数:

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

    其中第一个参数是最大的强引用对象数,第二个为最大的弱引用对象数。这两个值 FreeMarker 默认的是 0 和 Integer.MAX_VALUE,表明模版缓存数是无限的。

    ######以前用过这货,学习了
    2020-06-07 14:32:40
    赞同 展开评论
问答分类:
问答标签:
问答地址: