十六、模板缓存
Thymeleaf 的工作要归功于一组解析器(用于标记和文本),该解析器将模板解析为事件序列(打开标签,文本,关闭标签,Comments 等)和一系列处理器(每种需要一种行为)应用–修改模板解析的事件序列,以便通过将原始模板与我们的数据结合来创建我们期望的结果。
默认情况下,它还包括存储已解析模板的缓存;在处理模板文件之前读取和解析模板文件所导致的事件 Sequences。在 Web 应用程序中工作时,此功能特别有用,它基于以下概念:
- Importing/输出几乎始终是所有应用程序中最慢的部分。相比之下,内存中处理非常快。
- 克隆现有的内存中事件序列总是比读取模板文件,对其进行解析并为其创建新的事件序列要快得多。
- Web 应用程序通常只有几十个模板。
- 模板文件大小不一,在应用程序运行时不会被修改。
所有这些都导致了这样的想法,即在不浪费大量内存的情况下在 Web 应用程序中缓存最常用的模板是可行的,并且这将节省大量时间,而这些时间将花费在少量文件的 Importing/输出操作上实际上,这永远不会改变。
以及我们如何控制此缓存?首先,我们已经了解到可以在模板解析器上启用或禁用它,甚至只对特定模板起作用:
// Default is true
templateResolver.setCacheable(false);
templateResolver.getCacheablePatternSpec().addPattern("/users/*");
另外,我们可以通过构建自己的 Cache Manager 对象来修改其配置,该对象可以是默认StandardCacheManager
实现的实例:
// Default is 200
StandardCacheManager cacheManager = new StandardCacheManager();
cacheManager.setTemplateCacheMaxSize(100);
...
templateEngine.setCacheManager(cacheManager);
有关配置缓存的更多信息,请参考org.thymeleaf.cache.StandardCacheManager
的 javadoc API。
可以从模板缓存中手动删除条目:
// Clear the cache completely
templateEngine.clearTemplateCache();
// Clear a specific template from the cache
templateEngine.clearTemplateCacheFor("/users/userList");
最新评论
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk
命令: nload
真是个良心站点哇,大公无私,爱了爱了
还可以直接搞一张映射表,存 uid | time | source_index, 第一次直接查对应的 time 选出前100, 第二次直接用 CompleteFuture 去分别用 source_in
干得漂亮,多个朋友堵条路
2021.2.2版本的不适用吧