ASP.ET Core 9中新增的MapStaticAssets() 中间件解析
ASP.ET Core 9中新增的MapStaticAssets() 中间件解析
前言在Core 9.0版本中新增的内容不算多,除了内置OpenAPI 外 应该就属MapStaticAssets中间件最有价值了,最初MapStaticAssets主要是为了解决Blazor静态资源加载缓慢而生的,当然只要是wwwroot下的任何静态资产都是可以使用TA平替UseStaticFiles的,因此在了解
ASP.ET Core 9中新增的MapStaticAssets() 中间件解析
前言
在Core 9.0
版本中新增的内容不算多,除了内置OpenAPI 外 应该就属MapStaticAssets
中间件最有价值了,最初MapStaticAssets主要是为了解决Blazor
静态资源加载缓慢而生的,当然只要是wwwroot
下的任何静态资产都是可以使用TA平替UseStaticFiles
的,因此在了解了TA的优势后 建议升级到9.0的小伙伴都使用TA平替UseStaticFiles!
既有缺陷
通常,在我们既有的ETCore项目中,我们都是使用UseStaticFiles
中间件来提供静态资产,不过TA存在以下的一些缺陷:
- 缺乏静态资源的传输压缩 (当然,可以搭配压缩中间件,或者容器压缩(如IIS动态压缩))
- 使用ETag进行低效缓存(依赖于文件修改时间戳,因此内容不变时间戳变更将会导致重新加载)
- 缺乏指纹识别(浏览器可能会缓存和重复使用旧版本的资产,从而导致应用更新后出现不一致,影响用户体验)
解决问题
MapStaticAssets
旨在解决上述UseStaticFiles存在的一些缺陷:
- 为应用中的所有资产生成时间压缩:
- 在开发期间
gzip
,在发布期间 gzip +brotli
- 所有资产都经过压缩,目标是将资产大小降到最低。
- 基于内容的 ETags:每个资源的 Etags 都是内容的
SHA-256
哈希的 Base64 编码字符串。这可确保浏览器仅在文件内容发生更改时重新下载文件。 - 指纹识别资源,通过资源唯一标识,可以防止浏览器重复使用旧版本。当应用程序更新时,指纹会发生变化,从而确保客户端始终收到最新的资产。
在MapStaticAssets
内部的请求管道中TA做了下面这些事:
- 设置 ETag 和 Last-Modified 标头。
- 设置缓存标头。
- 使用 Caching Middleware。
- 如果可能,提供压缩的静态资产。
性能提升
下表显示了默认的 Razor Pages 模板中 CSS 和 JS 文件的原始大小和压缩大小:
文件 | 原始 | 压缩 | %缩减 |
---|---|---|---|
16 | 17.5 | 89.26% | |
jquery.js | 89.6 | 28 | 68.75% |
js | 78.5 | 20 | 74.52% |
总计 | 1.1 | 65.5 | 80.20% |
在使用Blazor
开发业务系统时将节省大量传输宽带,极大的提升加载速度
不可替部分
当然UseStaticFiles
仍然有TA不可替代的部分,比如虚拟文件提供者(如,嵌入的资产,其他磁盘路径资源,或网络资源等)
比如资源是嵌入到程序集的情况下你仍然必须使用:
代码语言:javascript代码运行次数:0运行复制var embeddedFileProvider = new EmbeddedFileProvider(typeof(ISetting).Assembly, "Biwen.Settings");
app.UseStaticFiles(new StaticFileOpti
{
FileProvider = embeddedFileProvider,
OnPrepareRespe = ctx =>
{
ctx.Context.Respe.Headers.Append("Cache-Control", "public,max-age=600");
}
});
结论
强烈建议在可替换UseStaticFiles()
的情况下使用MapStaticAssets()
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-22 21:41:44
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 什么是期房 | 29分钟前 发表 |
比如虚拟文件提供者(如 | |
本站网友 上海市工商局企业查询 | 29分钟前 发表 |
分享自 | |
本站网友 ugee | 3分钟前 发表 |
可以搭配压缩中间件 | |
本站网友 乔治索罗斯 | 22分钟前 发表 |
如果可能 | |
本站网友 闲人闲语 | 23分钟前 发表 |
目标是将资产大小降到最低 | |
本站网友 长沙取消限购 | 25分钟前 发表 |
"public |