我一直在试图迫使Spring Cloud Gateway在不同路径下从不同目录提供静态html内容,因为它具有多个应用程序。多亏了stackoverflow社区,它一开始很简单,我做了一些不错的配置等,并在spring上下文中简单地注册了RouterFunctions,
@Bean
RouterFunction<ServerResponse> staticResourceRouter(){
return RouterFunctions.resources("/an-application/**", new FileSystemResource("/something/blablastatic/"));
}
它就像一个咒语,我可以替换网关重定向的其他一些静态内容服务系统,它们已经过时了。
但是问题出现了-我能够在Internet上找到的所有内容都完全按照上面的方式,它不使用任何客户端资源缓存(缓存控制标头/ Last-Modified等)。我对Webflux并不是很精通,而且我不确定如何使用手动配置的路由器功能(在代码中,不是Spring Boot属性)配置此功能,以便服务器在使用浏览器缓存时响应304。我将不胜感激。
答案 0 :(得分:2)
functional endpoint variant of Spring WebFlux的目的是要轻巧,让您可以更好地控制发生的情况。普通的WebFlux应用程序将配置a resource handler with many options (cache control, transformation, etc),但我想在这种情况下,这可能不是Spring Cloud Gateway的首选方式。
我认为此功能不受支持,可能是good candidate for a new issue(如果还没有)。请注意,此功能可能超出Spring Cloud Gateway的范围,因为通常,资源解析/转换需要经常访问本地文件系统和服务于该资源的应用程序的本地知识-这与代理那些对资源的请求相反。