1

是否可以使用 Spring 3 MVC 设置一些过滤器,通过在文件名中嵌入一些时间戳,当流式传输到客户端时修改 javascript 文件和 css 文件的路径。然后当这些资源后来被请求另一个过滤器时,然后去掉这些时间戳?

这将尝试在重新部署应用程序时防止缓存的 js/css 文件出现问题

我需要做什么来设置它?如何设置过滤器以用时间戳替换路径,然后如何设置过滤器以稍后删除时间戳?

我只需要 web.xml 中有关 Spring 3 MVC 配置的信息,我可以接受过滤器中的实际代码需要做什么

4

1 回答 1

1

使用 Spring 的资源映射可能更简单<mvc:resources>,它将虚拟路径映射到 CSS 和 Javascript 文件的真实位置。虚拟路径可以包含应用程序的版本。这意味着当您部署新版本的应用程序时,发送到浏览器的 CSS 和 Javascript 的路径与以前不同,这会使浏览器误以为它们是新资源 - 因此它会重新加载它们。

例如在 /resources 中映射 CSS 和 Javascript 文件:

<mvc:resources location="/resources" mapping="/resources-1.2.0/**"/>

这表示任何带有 URL 模式 /resources-1.2.0 后跟任何内容(例如 /resources-1.2.0/css/styles.css)的请求,在web 根目录中名为resources的文件夹中查找文件.

当您在部署之间更新应用程序版本时,CSS 和 Javascript 资源的虚拟路径将发生变化,因此浏览器将被迫重新加载文件 - 即使真实文件位于相同的旧位置。

您也可以使应用程序版本动态化——因此您无需修改​​配置文件。

这里有对整个方法的更深入的描述。

于 2013-05-21T20:52:53.877 回答