我的SpringMVC/Thymeleaf应用程序遇到问题,当我发布包含对静态资源(图像,CSS文件,JavaScript库)所做更改的更新时,用户会遇到错误。发生问题是因为他们的浏览器缓存中具有旧版本的资源,因此如果强制刷新,问题就会消失,但是大多数用户都不知道这样做。

过去,我已经在其他框架中解决了此问题,方法是让构建将构建号注入(inject)到Spring bean中,并自定义URL构建机制以将构建号包括在URL中。将此与在这些资源上将Cache-Control响应 header 设置为不远的日期相结合,可确保只要用户在其浏览器缓存中拥有该资源,就不会重新获取该资源,除非我发布新的版本。

Spring MVC/Thymeleaf是否有解决此问题的内置方法?如果没有,如何覆盖Thymeleaf中的URL写入机制,以便添加上述行为?

最佳答案

一种解决方案是编写您自己的方言并定义一个自己的助手sr。然后,您可以编写@{#sr(yoururl)}。您可以找到有关编写自己的dialect的信息。



在方言中,您可以定义buildnr硬编码。

另一种方法是始终将buildnr添加到模型,然后可以编写@{yoururl(buildnr=${buildnr})}

或者最好将其放入消息源中,并可以使用@{yoururl(buildnr=#{buildnr})}

10-02 16:34