thymeleaf如何控制页面缓存的时间


在Thymeleaf中,可通过配置Thymeleaf的模板解析器和在Spring Boot应用里配置响应头来控制页面缓存时间。 1. 配置Thymeleaf模板解析器 在Spring Boot应用中,可通过配置`SpringResourceTemplateResolver`来控制模板缓存。以下是示例代码: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; @Configuration public class ThymeleafConfig { @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); // 设置模板缓存时间,单位为毫秒,这里设置为60000毫秒即1分钟 templateResolver.setCacheTTLMs(60000L); // 开启模板缓存 templateResolver.setCacheable(true); return templateResolver; } } ``` 代码注释解释: - `SpringResourceTemplateResolver`是Thymeleaf用于解析Spring资源的模板解析器。 - `setCacheTTLMs`方法用于设置模板的缓存时间,单位是毫秒。 - `setCacheable`方法用于开启或关闭模板缓存。 2. 配置响应头 在控制器中,可通过设置响应头来控制页面的缓存时间。示例代码如下: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import javax.servlet.http.HttpServletResponse; @Controller public class PageController { @GetMapping("/yourPage") public String yourPage(HttpServletResponse response) { // 设置缓存时间为60秒 response.setHeader("Cache-Control", "max-age=60"); return "yourPage"; } } ``` 代码注释解释: - `HttpServletResponse`用于设置HTTP响应的相关信息。 - `setHeader`方法用于设置响应头,`Cache-Control`是用于控制缓存的HTTP头,`max-age`指定了缓存的最大时间,单位是秒。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 不同环境下的缓存时间设置要合理,开发环境可设置较短的缓存时间,生产环境可根据实际情况设置较长的缓存时间。 2. 注意`Cache-Control`头和模板解析器的缓存时间的一致性,避免出现不一致导致的缓存问题。 3. 当修改模板文件后,要确保缓存已失效或者手动清除缓存,否则可能看不到页面的更新。 [2025-08-25 19:42:46 | AI写代码神器 | 577点数解答]
- - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内 (571点数解答 | 2025-08-23 20:54:40)87
- - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内,并且可以增加新的一样的文本(1317点数解答 | 2025-08-23 20:58:40)99
- cannot find template location: classpath:/templates/ (please add some templates or check your thymeleaf configuration)(1147点数解答 | 2023-10-07 10:58:25)276
- 如何捕获“org.thymeleaf.spring5”的异常信息(336点数解答 | 2024-03-14 10:48:29)175
- 作为c#工程师,如何⾃定义委托?(388点数解答 | 2023-11-09 17:55:52)261
- 作为**工程师,如何**app性能?对应有哪些**方案(300点数解答 | 2023-11-09 18:31:04)232
- jenkins 如何 配置 同时执行多少个线程(253点数解答 | 2024-01-10 10:12:35)293
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下:(41点数解答 | 2025-06-22 11:25:54)99
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。(538点数解答 | 2025-06-22 11:26:15)82
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下(400点数解答 | 2025-06-22 21:21:28)69
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下: #include <reg51.h> void ex0_isr() interrupt 0 { static unsigned char led = 0x01; P2 = led; led = (led << 1) | (led >> 7); } void main() { IT0 = 1; EX0 = 1; EA = 1; P2 = 0x01; while(1); } (228点数解答 | 2025-06-22 23:18:42)78
- 如何 手动添加Unity3D 命名空间(332点数解答 | 2025-06-25 18:33:05)91