Javascript Java/SpringMVC/Maven项目的缓存破坏机制

Javascript Java/SpringMVC/Maven项目的缓存破坏机制,javascript,css,maven,caching,browser,Javascript,Css,Maven,Caching,Browser,我正在使用的应用程序的一些背景知识:SpringMVC、JavaEEWeb应用程序、Maven 基本上,我要寻找的是一种在应用程序每次部署时刷新所有JS和CSS文件的机制。目前,应用程序正在引用静态文件(例如“js/app.js”)。每次对该文件进行更改时,在本地重新部署后,当浏览器下载该文件时,我们会得到一个304(该文件尚未修改)。我的问题是: 1) 在重新部署应用程序时再次提供这些文件是否更好,并使用应用程序版本作为缓存破坏机制(例如“js/v1.0.0/app.js”)。这可以通过ser

我正在使用的应用程序的一些背景知识:SpringMVC、JavaEEWeb应用程序、Maven

基本上,我要寻找的是一种在应用程序每次部署时刷新所有JS和CSS文件的机制。目前,应用程序正在引用静态文件(例如“js/app.js”)。每次对该文件进行更改时,在本地重新部署后,当浏览器下载该文件时,我们会得到一个304(该文件尚未修改)。我的问题是:

1) 在重新部署应用程序时再次提供这些文件是否更好,并使用应用程序版本作为缓存破坏机制(例如“js/v1.0.0/app.js”)。这可以通过servlet过滤器完成

2) 由于该项目是一个maven动态web项目,因此是否有某种插件可以实现这种功能。我在看wro4j,看看它是否能做到这一点,但从我读到的很少的信息来看,它主要用于处理这些JS和CSS的缩小,这也是非常有用的


哪种方法是正确的?提前感谢

您应该向静态资源中添加版本,或者禁用浏览器中的缓存

我不知道“正确的”但最常见的解决方案是使用静态文件的版本控制,例如app.js将成为app-14gd54646rfw3.js。该数字通常是内容的MD5,因此只有当文件更改时才会更改

使用spring,您可以通过如下链接中所述的内置机制实现它

如果你想使用Maven插件来连接和缩小功能,你可以使用一个吞咽或咕噜任务作为构建工具

你可以在这里找到更多信息

您是否可以使用CMS常用的查询字符串,如Drupal?示例URL:path/to/file.js?123456下一次部署后的示例URL:path/to/file.js?123456?[UNIX时间戳/随机字符串/某些变量]现在有相同的要求。你最后做了什么@KruizI我已经使用微软的堆栈很长时间了。现在我正在使用Java、Spring和Tomcat堆栈,我很想找到捆绑、缩小和破坏缓存的最佳实践。我知道这是一篇老文章,但你能分享你的发现吗?谢谢-VDisableCache并不是真正的用户友好型。