java - 使用 Spring 3 过滤器在资源路径中嵌入时间戳?

标签 java spring-mvc spring-3

使用 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/

相关文章:

java - 无法创建文件,因为文件不存在

Java 小程序 HttpClient AccessControlException

java - 在单个服务器中部署多个 Spring Boot Web 应用程序

java - Spring MVC Controller 不会响应表单中的 POST

java - org.eclipse.swt.widgets.Table - 添加项目

java - nmap 无法找到 nmap 服务

java - 如何重写 Spring Boot RequestMappingHandlerMapping?

java - 在 Spring 3 中为所有 Controller 的模型添加属性

java - 在服务器上运行spring项目

spring - Spring 中 JavaConfig 相对于 XML 配置的优势?