2.5.1 缓存模板
默认情况下,模板在第一次使用时只解析一次,解析的结果被缓存以供后续使用。对于生产环境来说,这是一个很好的特性,因为它可以防止对每个请求进行冗余的模板解析,从而提高性能。
但是,在开发时,这个特性并不那么好。假设启动了应用程序并点击了玉米卷设计页面,并决定对其进行一些更改。当刷新 web 浏览器时,仍然会显示原始版本。查看更改的惟一方法是重新启动应用程序,这非常不方便。
幸运的是,有一种方法可以禁用缓存。只需将你所使用的模板(例如thymeleaf)的缓存属性设置为 false。表 2.3 列出了每个支持的模板库的缓存属性。
表 2.3 启用/禁用模板缓存的属性
模板 | 缓存使能属性 |
---|---|
Freemarker | spring.freemarker.cache |
Groovy Templates | spring.groovy.template.cache |
Mustache | spring.mustache.cache |
Thymeleaf | spring.thymeleaf.cache |
默认情况下,所有这些属性都设置为 true 以启用缓存。可以通过将其缓存属性设置为 false 来禁用所选模板引擎的缓存。例如,要禁用 Thymeleaf 缓存,请在 application.properties 中添加以下行:
spring.thymeleaf.cache = false
惟一的问题是,在将应用程序部署到生产环境之前,一定要删除这一行(或将其设置为 true)。一种选择是在 profile 文件中设置属性。(我们将在第 5 章讨论 profiles 文件。)
一个更简单的选择是使用 Spring Boot 的 DevTools,就像我们在第 1 章中选择的那样。在 DevTools 提供的许多有用的开发时帮助中,它将禁用所有模板库的缓存,但在部署应用程序时将禁用自身(从而重新启用模板缓存)。