LINUX.ORG.RU

Как заставить SpringBoot не кешировать файлы в static?

 , ,


0

2

Два проекта в IDEA: один - SpringBoot как бэк, второй - ReactJS (сборка Webpack) как фронт. В конфиге webpack указан путь для сборки - в подпапку в static бэка.

Хочу при сборке фронта, чтобы запущенный бэк начинал отдавать на запросы bundle.js уже новый файл. Сейчас этого можно добиться только перезапуском бэка.

Код

@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS)
                .setCacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS));
    }

}

не помогает, хотя в браузере видно, что файл не грузится из кеша. Но это браузерный кеш, а как отключить кеширование в самом SpringBoot?

★★★★★
Ответ на: комментарий от O02eg

а чем это особо поможет, если есть такая возможность? делать sheduled-таск раз в несколько секунд, которая будет инвалидировать кеш?..

bvn13 ★★★★★
() автор топика

Начни с такого в пропертях: spring.resources.chain.cache=false

если нужно что-то более умное, то придется копаться по поводу spring.resources.chain.strategy

stevejobs ★★★★☆
()
Ответ на: комментарий от bvn13

А зачем тебе всегда так? Только после деплоя же надо.

O02eg ★★★★★
()

я тебя разочарую, наверное, но спринг берет файлы не из src/main/static а из build/classes/static (это примерно щас негде глянуть куда это все собирается) и то если собираешь мавеном

в общем надо просто собирать не в сорцы, и кеширование мешать не будет

Deleted
()
Ответ на: комментарий от Deleted

точно же :) как я не догадался...

тогда как сказать вебпаку, что нужно после сборки положить в два каталога бандл?

bvn13 ★★★★★
() автор топика

Но это браузерный кеш, а как отключить кеширование в самом SpringBoot?

Используй AbstractSingletonProxyFactoryBean или setApplyWebRequestInterceptorsToRenderPhaseOnly.

anonymous
()

Я обычно делаю наоборот, запускаю webpack-dev-server и настраиваю в нем проксирование на бэкенд.

anonymous
()
Ответ на: комментарий от anonymous

Анон прав, зачем спрингбутом отдавать контент на локальной машине, настрой nginx который будет собирать тебе api и статику

anonymous
()
Ответ на: комментарий от php-coder

У ТСа он запущен в idea, там он раздает не из жарника 8)

Deleted
()
Ответ на: комментарий от bvn13

Ну так на продакшене nginx, а при разработке webpack-dev-server. В простейшем случае это один npm install и три строчки в webpack.config.js, чтобы настроить проксирование. Заодно получишь автопересборку и автообновление страницы при изменении исходников.

deadNightTiger ★★★★★
()
Ответ на: комментарий от anonymous

За такие названия сразу Оскар нужно давать разработчикам.

dzidzitop ★★
()
Ответ на: комментарий от bvn13

Полная беспомощность при таком богатом раскладе в руках современных, простых в освоении и прочее-прочее инструментах как бы намекает, что что-то в реальности не так, как обещают создатели.

Без сарказма.

dzidzitop ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.