我如何弄清楚为什么我的Thymeleaf页面渲染得这么慢?

时间:2020-09-21 07:55:31

标签: spring-boot performance thymeleaf

我正在处理的当前项目使用的是Spring boot 2.3.1.RELEASE,然后是Thymeleaf3。我们大量使用片段th:includes和th:replaces,我们的网页在本地开发中的运行速度非常慢。

部署的几乎每个页面都会立即加载,但是在本地开发中,某些页面最多需要20、25秒才能呈现。调试时,我看到我们花了一些时间在数据库访问上(〜5秒),仍然需要大约20秒的渲染时间。

我可以看到一页的元素一个接一个地弹出,彼此之间相差几秒钟。

我现在的问题是-我如何正确地对此进行分析,以找出为什么百里香叶渲染在本地开发中如此缓慢的原因?

更新-花了一些时间在VisualVM上玩耍,现在我发现了这一点:

enter image description here

至少证明了渲染Thymeleaf对象确实花费了时间。

我现在将尝试调试为什么AbstractElementProcessor需要这么多时间。任何改善模板性能的技巧都将受到赞赏!

1 个答案:

答案 0 :(得分:0)

感谢VisualVM,我找到了问题的根源:

enter image description here

事实证明,大多数渲染时间都花在了刷新消息属性上,因为缓存设置错误,或者是故意禁用的。 (我们在source.setCacheSeconds(0)上使用了ReloadableResourceBundleMessageSource。将缓存更改为合理的值后,渲染速度很快。