Spring MVC + Thymeleaf:静态资源的更新

时间:2013-08-22 22:04:49

标签: java spring caching spring-mvc thymeleaf

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

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

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

1 个答案:

答案 0 :(得分:2)

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

的信息
  

“至于创建自己的实用程序对象,可以通过创建实现IExpressionEnhancingDialect接口的简单方言来完成。这将使Thymeleaf添加getAdditionalExpressionObjects()方法实现返回的任何对象到处理环境。“

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

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

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