Freemarker模版缓存问题

发布于 2021-11-07 14:35:23 字数 1483 浏览 931 评论 5

一个资讯项目,需要静态化,使用的freemarker

 获取模版的方法

public static Template getTemplate(String contextPath){
	Configuration cfg = new Configuration();
	try {
	    cfg.setDirectoryForTemplateLoading(new File(contextPath + FTL_PATH));
	} catch (IOException e) {
		return null;
	}
	cfg.setObjectWrapper(new DefaultObjectWrapper());
	cfg.setDefaultEncoding("UTF-8");
	cfg.setTemplateUpdateDelay(0);
	cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(100, 2500));
	
	Template temp = null;
	try {
		temp = cfg.getTemplate(FTL_NEWS_DETAIL);
	} catch (IOException e) {
	    return null;
	}
	return temp;
}

 循环调用这个

for (News news : list) {
    .......
    省略填充数据过程
    .......
    writer = new OutputStreamWriter(new FileOutputStream(f), "UTF-8");
    getTemplate(contextPath).process(root, writer);
    .......
    生成html文件
 }

控制台日志:

2011-12-07 Could not find template in cache, creating new one;.....
2011-12-07 Compiling FreeMarker template detail.ftl[zh_CN,UTF-8,parsed] ....

我的要求是:如何设置,让模版缓存,而不提示这种:

Could not find template in cache

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

成熟稳重的好男人 2021-11-08 18:43:42
DEBUG [freemarker.cache]: detail_news.ftl[zh_CN,UTF-8,parsed] 
using cached since E:softworkspace5.metadata......ftl didn't change.

爱的那么颓废 2021-11-08 13:07:21

ok,我试试!

眼泪淡了忧伤 2021-11-08 11:17:01

全局实例化是不是将Configuration cfg = new Configuration();放到getTemplate这个静态方法之外

多情癖 2021-11-08 10:53:56

是的

顾忌 2021-11-07 17:50:40

Configuration 对象不应该在每次 getTemplate 的时候都重新实例化。

应该在全局实例化后,以后直接调用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文