当前位置: 代码网 > it编程>编程语言>Asp.net > ASP.NET Core 9.0 中新增的MapStaticAssets() 中间件详解

ASP.NET Core 9.0 中新增的MapStaticAssets() 中间件详解

2025年02月13日 Asp.net 我要评论
前言在core 9.0版本中新增的内容不算多,除了内置openapi外 应该就属mapstaticassets中间件最有价值了,最初mapstaticassets主要是为了解决blazor静态资源加载

前言

core 9.0版本中新增的内容不算多,除了内置openapi 外 应该就属mapstaticassets中间件最有价值了,最初mapstaticassets主要是为了解决blazor静态资源加载缓慢而生的,当然只要是wwwroot下的任何静态资产都是可以使用ta平替usestaticfiles的,因此在了解了ta的优势后 建议升级到9.0的小伙伴都使用ta平替usestaticfiles!

既有缺陷

通常,在我们既有的netcore项目中,我们都是使用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 文件的原始大小和压缩大小:

文件原始压缩%缩减
bootstrap.min.css16317.589.26%
jquery.js89.62868.75%
bootstrap.min.js78.52074.52%
总计331.165.580.20%

在使用blazor开发业务系统时将节省大量传输宽带,极大的提升加载速度

不可替部分

当然usestaticfiles仍然有ta不可替代的部分,比如虚拟文件提供者(如,嵌入的资产,其他磁盘路径资源,或网络资源等)

比如资源是嵌入到程序集的情况下你仍然必须使用:

var embeddedfileprovider = new embeddedfileprovider(typeof(isetting).assembly, "biwen.settings");
app.usestaticfiles(new staticfileoptions
{
    fileprovider = embeddedfileprovider,
    onprepareresponse = ctx =>
    {
        ctx.context.response.headers.append("cache-control", "public,max-age=3600");
    }
});

结论

强烈建议在可替换usestaticfiles()的情况下使用mapstaticassets()

到此这篇关于asp.net core 9.0 中新增的mapstaticassets() 中间件的文章就介绍到这了,更多相关asp.net core 中间件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com