我们正在将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过滤器中覆盖它?