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

问题描述 投票:1回答:1

我们正在将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文件设置no-cache,max-age = 0的位置。我想知道node / webpack是否在后台设置它?如果是这样,如何在Servlet过滤器中覆盖它?

java caching webpack browser-cache
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.