我的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})}
。