相信很多小伙伴在工作中都会遇到一个这样的问题,就是用jsp写页面时,jsp代码修改后,点击保存,页面一刷新,就可以把修改内容同步到页面了,不需要重启服务器;但是当我们用freemarker的ftl写页面时,却发现没有这么便利,ftl页面每次的修改都要重启服务器,页面才能显示最新修改内容。
这个问题,无疑是让程序员最绝望的,因为我们都知道,页面的修改是很频繁的,可能一个样式的参数调试,就要调很多遍,这种情况下,每次都重启服务器,工作效率是大打折扣的。
但是,不要慌,有问题,就会有解决办法。
如何解决呢????
先提个问题,是不是我们每次修改保存ftl文件,修改的内容都会立即更新到模板文件中呢?
答案:否。
为什么呢?不是应该立即更新吗?
当然不是,如果我们每次修改都会去更新模板文件,那模板文件的读取频次会很高,这样会降低系统的负载。
所以freemarker设计者在创作时,就考虑到了这个问题,并且通过缓存来解决这个问题。
1.解决思路:
freemarker将模版文件的内容进行缓存,当处理某个模版时,freemarker直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件的同步。
2.具体操作:
在freemarker中有一个延迟更新template_update_delay 属性,它是用来指定更新模板文件的间隔时间的。
如果template_update_delay = 3600 ,那么我们在ftl文件修改的内容,保存,并且过了3600毫秒,也就是3.6秒后,它才把修改内容更新到模板文件中。
但是如果我们不想等,想保存后,在页面就能看到修改后的效果,那就可以在freemarker.properties配置文件中,把这个template_update_delay属性的值设置为0。
也就是:
template_update_delay = 0
这样就可以解决问题了。
实战项目示例: