【问题标题】:How to serve static resources using webflux but with CACHE support如何使用 webflux 提供静态资源但支持 CACHE
【发布时间】:2020-02-27 21:37:05
【问题描述】:

我一直在尝试强制spring cloud gateway在不同路径下提供来自不同目录的静态html内容,因为它有多个应用程序。感谢stackoverflow社区,一开始很简单,我做了一些不错的配置等,并在spring上下文中简单地注册了RouterFunctions,只要我需要:

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

它就像一个魅力,我可以替换网关重定向的其他一些静态内容服务系统,它们已经过时了。

然而问题出现了——我在互联网上找到的所有内容都与上述方式完全相同,它不使用任何客户端资源缓存(缓存控制标头/ Last-Modified 等)。我对 webflux 不是很精通,我不确定如何使用手动(在代码中,而不是 spring boot 属性)配置的路由器功能来配置它,以便在应该使用浏览器缓存时服务器响应 304。我将不胜感激。

【问题讨论】:

    标签: java spring-cloud spring-webflux spring-cloud-gateway


    【解决方案1】:

    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 的范围,因为通常资源解析/转换需要经常访问本地文件系统和服务该资源的应用程序的本地知识 - 这不利于代理这些资源请求。

    【讨论】:

    • 感谢您澄清这一点,我想我会创建自己的 HandlerFunction 并实现此功能,并可能为 spring 项目做一个拉取请求 :)
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 2018-03-16
    • 2022-10-20
    • 1970-01-01
    • 2019-12-13
    • 2019-02-11
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多