如何在基于java的web应用程序中覆盖重复的http缓存头?

如何在基于java的web应用程序中覆盖重复的http缓存头?,java,caching,webpack,browser-cache,Java,Caching,Webpack,Browser Cache,我们正在将webpack集成到传统的基于java的webapp中。作为第一步,添加前端maven插件来安装node、npm和webpack。能够很好地捆绑js和css 我还在webpack中使用缓存破坏。捆绑的js和css是散列的,其名称格式为bundle.hash.js。我为jsp编写了一个自定义标记,用于传递参数并获取散列文件。这一切似乎都很好,现在的想法是在捆绑文件上设置一年的长缓存 我编写了一个自定义过滤器,它实现javax.servlet.filter并设置缓存头。并在web.xml中

我们正在将webpack集成到传统的基于java的webapp中。作为第一步,添加前端maven插件来安装node、npm和webpack。能够很好地捆绑js和css

我还在webpack中使用缓存破坏。捆绑的js和css是散列的,其名称格式为bundle.hash.js。我为jsp编写了一个自定义标记,用于传递参数并获取散列文件。这一切似乎都很好,现在的想法是在捆绑文件上设置一年的长缓存

我编写了一个自定义过滤器,它实现javax.servlet.filter并设置缓存头。并在web.xml中为js、css映射添加了此过滤器

int cacheAge = 31536000; // setting long year cache
  response.setHeader("Cache-Control", "max-age="+ cacheAge);
问题是,当我为bundle.hash.js文件运行应用程序时,设置了两个缓存控件。因此,bundle.*.js文件无法缓存。对于bundle.hash.css,只设置了31536000的最大年龄,并由浏览器缓存

cache-control: max-age=31536000
cache-control: no-cache, no-store, max-age=0, must-revalidate

我不知道如何以及从何处设置js文件的无缓存,max age=0。我想知道node/webpack是否将其设置在引擎盖下?如果是这样,我如何在servlet过滤器中覆盖它?

花了几个小时后终于找到了答案。Spring security添加了no-cache,max-age=0头事件,尽管我在servlet过滤器中设置了max-age。我在dist dir下的bundle文件的context.xml文件中将安全性设置为none,似乎工作正常。

花了几个小时后终于找到了答案。Spring security添加了no-cache,max-age=0头事件,尽管我在servlet过滤器中设置了max-age。我在dist dir下的bundle文件的context.xml文件中将安全性设置为none,看起来工作正常