静态资源
此选项提供了一种便捷的方式,可以从 Resource
-based 位置列表中提供静态资源。
在下一个示例中,给定一个以 /resources
开头的请求,相对路径用于查找并提供相对于 Web 应用程序根目录下 /public
或类路径下 /static
的静态资源。这些资源将以一年后的未来过期时间提供,以确保最大程度地利用浏览器缓存并减少浏览器发出的 HTTP 请求。Last-Modified
信息从 Resource#lastModified
推断,以便支持带有 "Last-Modified"
头的 HTTP 条件请求。
以下清单展示了如何实现:
另请参阅 静态资源的 HTTP 缓存支持。
资源处理器还支持 ResourceResolver
实现链和
ResourceTransformer
实现链,
您可以利用它们来创建用于处理优化资源的工具链。
您可以使用 VersionResourceResolver
基于从内容计算的 MD5 散列、固定的应用程序版本或其他方式来生成版本化的资源 URL。
ContentVersionStrategy
(MD5 散列) 是一个不错的选择 — 除了某些显著的例外,例如与模块加载器一起使用的 JavaScript 资源。
以下示例展示了如何使用 VersionResourceResolver
:
然后,您可以使用 ResourceUrlProvider
重写 URL 并应用完整的解析器和转换器链 — 例如,插入版本。MVC 配置提供了一个 ResourceUrlProvider
bean,以便它可以注入到其他地方。您还可以使用 ResourceUrlEncodingFilter
使重写对于 Thymeleaf、JSP、FreeMarker 和其他依赖于 HttpServletResponse#encodeURL
的 URL 标签透明。
请注意,当同时使用 EncodedResourceResolver
(例如,用于提供 gzipped 或 brotli 编码的资源)和 VersionResourceResolver
时,您必须按此顺序注册它们。
这确保了基于内容的版本始终基于未编码的文件可靠地计算。
对于 WebJars,推荐且最有效的使用方式是版本化的 URL,例如
/webjars/jquery/1.2.0/jquery.min.js
。相关的资源位置在 Spring Boot 中是开箱即用的(或可以通过 ResourceHandlerRegistry
手动配置),并且不需要添加 org.webjars:webjars-locator-core
依赖项。
无版本 URL,如 /webjars/jquery/jquery.min.js
,通过 WebJarsResourceResolver
支持,当 org.webjars:webjars-locator-core
库存在于类路径上时,该解析器会自动注册,代价是类路径扫描可能会减慢应用程序启动速度。该解析器可以重写 URL 以包含 jar 的版本,并且还可以匹配不带传入版本的 URL — 例如,从 /webjars/jquery/jquery.min.js
到 /webjars/jquery/1.2.0/jquery.min.js
。
基于 |