Мы интегрируем веб-пакет в наше устаревшее веб-приложение на основе Java. В качестве первого шага добавлен frontend-maven-plugin для установки node, npm и webpack. Умеет связывать JS и CSS хорошо.
Я также использую очистку кэша в веб-пакете. Связанные js и css хэшируются и имеют имя в формате bundle.hash.js. И я написал собственный тег для JSP, чтобы передать параметр и получить хэшированный файл. Кажется, все это работает нормально, теперь идея состоит в том, чтобы установить длинный кеш на год для связанных файлов.
Я написал специальный фильтр, который реализует javax.servlet.Filter и устанавливает заголовки кеша. И добавил этот фильтр для сопоставлений js, css в web.xml
int cacheAge = 31536000; // setting long year cache
response.setHeader("Cache-Control", "max-age="+ cacheAge);
Проблема в том, что когда я запускаю приложение для файла bundle.hash.js, устанавливаются 2 элемента управления кэшем. В результате файл комплекта. *. Js не кэшируется. Для bundle.hash.css устанавливается максимальный возраст 31536000, как и ожидалось, и он кэшируется браузером.
cache-control: max-age=31536000
cache-control: no-cache, no-store, max-age=0, must-revalidate
Я не могу понять, как и откуда устанавливается no-cache, max-age = 0 для файлов js. Интересно, узел / webpack устанавливает его под капотом? Если так, как я могу переопределить это в Фильтре сервлета?