如何在基于Java的网络应用中覆盖重复的http缓存标头?

我们正在将webpack集成到基于Java的旧版webapp中。第一步,添加了frontend-maven-plugin来安装节点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文件运行应用程序时,设置了2个缓存控件。结果,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过滤器中覆盖它?

qq313987933 回答:如何在基于Java的网络应用中覆盖重复的http缓存标头?

最后花了几个小时才弄清楚。尽管我已经在servlet过滤器中设置了max-age,Spring Security还是添加了no-cache,max-age = 0头。我在dist dir下的bundle文件的context.xml文件中将安全性设置为none,并且似乎工作正常。

本文链接:https://www.f2er.com/3135196.html

大家都在问