Как обслуживать статические ресурсы с помощью webflux, но с поддержкой CACHE

Я пытался заставить Spring Cloud Gateway обслуживать статический HTML-контент из разных каталогов по разным путям, потому что он имеет несколько приложений. Благодаря сообществу stackoverflow в начале это было просто, я сделал несколько хороших конфигураций и т. д. и просто зарегистрировал RouterFunctions в контексте spring, столько, сколько мне нужно:

@Bean
RouterFunction<ServerResponse> staticResourceRouter(){
    return RouterFunctions.resources("/an-application/**", new FileSystemResource("/something/blablastatic/"));
}

Это работает как шарм, и я мог бы заменить некоторые другие системы обслуживания статического контента, которые перенаправлял шлюз, они устарели.

Однако возникла проблема - все, что я смог найти в Интернете, дает точно такой же способ, как указано выше, который не использует какое-либо кэширование ресурсов на стороне клиента (заголовки управления кешем / Last-Modified и т. Д.). Я не очень хорошо разбираюсь в webflux, и я не уверен, как настроить это вручную (в коде, а не в свойствах весенней загрузки) настроенными функциями маршрутизатора, чтобы сервер отвечал 304, когда следует использовать кеш браузера. Буду признателен за помощь.


person maslan    schedule 01.11.2019    source источник


Ответы (1)


Вариант функциональной конечной точки Spring WebFlux должен быть легким и давать вам больше контроля над тем, что происходит. Стандартное приложение WebFlux настроит обработчик ресурсов с множеством опций (управление кешем, преобразование и т. д.), но я предполагаю, что в данном случае это может быть не предпочтительным способом с Spring Cloud Gateway.

Я думаю, что эта функция не поддерживается, и это может быть хорошим кандидатом для новой проблемы. (если его еще нет). Обратите внимание, что эта функция может быть недоступна для Spring Cloud Gateway, поскольку обычно для разрешения/преобразования ресурсов часто требуется доступ к локальной файловой системе и локальное знание приложения, обслуживающего этот ресурс, что противоречит проксированию этих запросов на ресурсы.

person Brian Clozel    schedule 02.11.2019
comment
Спасибо за разъяснение, я думаю, что я просто создам свою собственную функцию HandlerFunction с этим реализованным и, возможно, сделаю запрос на перенос для весеннего проекта :) - person maslan; 04.11.2019