使用 Spring 3 MVC 设置一些过滤器是否可行,其中通过在文件名中嵌入一些时间戳,在流式传输到客户端时修改 javascript 文件和 css 文件的路径。然后,当稍后请求这些资源时,另一个过滤器会删除这些时间戳?
这是为了防止重新部署应用程序时出现缓存的 js/css 文件问题
我需要做什么来设置它?如何设置过滤器以用时间戳替换路径,然后如何设置过滤器以稍后删除时间戳?
我只需要 web.xml 中有关 Spring 3 MVC 配置的信息,我同意过滤器中的实际代码需要执行的操作
最佳答案
使用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 资源的虚拟路径将会更改,因此浏览器将被迫重新加载文件 - 即使实际文件位于相同的旧位置。
您也可以使应用程序版本动态 - 因此您无需修改配置文件。
有关于整个方法的更深入的文章 here .
关于java - 使用 Spring 3 过滤器在资源路径中嵌入时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672699/