4

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

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

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

4

1 回答 1

2

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

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

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

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

或者更好的是你把它放到消息源中并且可以使用@{yoururl(buildnr=#{buildnr})}.

于 2013-08-27T09:29:06.773 回答