当前位置: 首页 > news >正文

ASP.NET Core 9.0 静态资产传递优化 (MapStaticAssets )

一、结论

💢先看结论吧, MapStaticAssets 在大多数情况下可以替换 UseStaticFiles,它已针对为应用在生成和发布时了解的资产提供服务进行了优化。 如果应用服务来自其他位置(如磁盘或嵌入资源)的资产,则应使用 UseStaticFiles

 MapStaticAssets 是ASP.NET Core中的一个新功能,用于优化应用中的静态资产传递。该功能通过使用静态资产清单( manifest )来管理静态文件,从而减少不必要的网络请求,提高应用性能。

🪄功能和用法

 MapStaticAssets 的主要功能包括:
‌优化静态资产传递‌:通过使用静态资产清单, MapStaticAssets 可以确保浏览器只请求必要的文件,减少带宽使用和加载时间。
‌支持多种UI架构‌:该功能可以与 Blazor 、 Razor Pages 和 MVC 等UI架构配合使用,提供一致的性能优化。

fd42ff06bc6f475bbc37525db95bd114.jpeg

二、求证

 MapStaticAssets 可优化 ASP.NET Core 应用中静态资产的交付。

1. 如果没有 压缩 缓存 指纹 等优化措施:

  • 浏览器必须在 每个页面加载 时发出其他请求。
  • 通过网络传输的字节数 超过所需 的字节数。
  • 有时会将文件的 过时版本 提供给客户端。

2. 创建高性能 Web 应用需要优化到浏览器的资产传送,可能的优化包括

  • 在文件发生更改或浏览器清除其缓存之前,提供一次给定资产。 设置 ETag 标头。
  • 更新应用后,阻止浏览器使用旧资产或过时资产。 设置上次修改的标头。
  • 设置正确的 缓存标头。
  • 使用 缓存中间件。
  • 尽可能提供资产的 压缩 版本。
  • 使用 CDN 为离用户更近的资产提供服务。
  • 最大程度地减少提供给浏览器的资产大小, 此优化不包括缩小。

🎯 MapStaticAssets 是一项新功能,用于优化应用中静态资产的交付。 它旨在处理所有 UI 框架,包括 Blazor、Razor、Pages 和 MVC。 它通常是一个下降的替代方法 UseStaticFiles:

var builder = WebApplication.CreateBuilder(args);builder.Services.AddRazorPages();var app = builder.Build();if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/Error");app.UseHsts();
}app.UseHttpsRedirection();app.UseRouting();app.UseAuthorization();+app.MapStaticAssets();
-app.UseStaticFiles();
app.MapRazorPages();app.Run();

 MapStaticAssets 的运作方式是结合生成和发布时过程来收集应用中所有静态资源的信息。 然后,运行时库会利用此信息有效地向浏览器提供这些文件。

但是, MapStaticAssets 在大多数情况下可以替换 UseStaticFiles,它已针对为应用在生成和发布时了解的资产提供服务进行了优化。 如果应用服务来自其他位置(如磁盘或嵌入资源)的资产,则应使用  UseStaticFiles 。

 MapStaticAssets 提供了以下  UseStaticFiles  没有的好处:

  • 为应用中的所有资产生成时间压缩:
    • 在开发期间 gzip,在发布期间 gzip + brotli
    • 所有资产都经过压缩,目标是将资产大小降到最低。
  • 基于内容的 ETags:每个资源的 Etags 都是内容的 SHA-256 哈希的 Base64 编码字符串。 这可确保浏览器仅在文件内容发生更改时重新下载文件。

🆚下表显示了默认的 Razor Pages 模板中 CSS JS 文件的原始大小和压缩大小:

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

🆚下表显示了使用 Fluent UI Blazor 组件库 的原始大小和压缩大小:

文件原始压缩% 缩减
fluent.js3847380.99%
fluent.css941188.30%
总计4788482.43%

总共 478 KB 未压缩到 84 KB 压缩。

🆚下表显示了使用 MudBlazor Blazor 组件库的原始大小和压缩大小:

文件原始压缩约简
MudBlazor.min.css54137.593.07%
MudBlazor.min.js47.49.280.59%
总计588.446.792.07%

使用 MapStaticAssets 时自动进行优化。 添加或更新库(例如使用新的 JavaScript 或 CSS)时,资产将作为生成的一部分进行优化。 优化对于可具有较低带宽或不可靠的连接的移动环境尤其有利。

有关新的文件传递功能的详细信息,请参阅以下资源:

  • ASP.NET Core 中的静态文件
  • ASP.NET Core Blazor 静态文件

在服务器上启用动态压缩与使用 MapStaticAssets

在服务器上,与动态压缩相比, MapStaticAssets  具有以下优势:

  • 更简单,因为没有特定于服务器的配置。
  • 性能更高,因为资产在生成时被压缩。
  • 允许开发人员在生成过程中花费额外的时间,以确保资产的大小达到最小。

🆚请查看下表,它将 MudBlazor 压缩与 IIS 动态压缩和 MapStaticAssets 进行了比较:

IIS gzipMapStaticAssetsMapStaticAssets 减少
≅ 9037.559%

cc7a1cfac5a741129f7395855cd8a285.jpeg

关注不迷路~~💕

相关文章:

ASP.NET Core 9.0 静态资产传递优化 (MapStaticAssets )

一、结论 💢先看结论吧, MapStaticAssets 在大多数情况下可以替换 UseStaticFiles,它已针对为应用在生成和发布时了解的资产提供服务进行了优化。 如果应用服务来自其他位置(如磁盘或嵌入资源)的资产,则应…...

LeetCode刷题day18——贪心

LeetCode刷题day18——贪心 135. 分发糖果分析: 406. 根据身高重建队列分析:for (auto& p : people) 昨天写了一道,今天写了一道,都有思路,却不能全整对。昨天和小伙伴聊天,说是因为最近作业多&#xf…...

MATLAB Simulink® - 智能分拣系统

系列文章目录 前言 本示例展示了如何在虚幻引擎 环境中对四种不同形状的标准 PVC 管件实施半结构化智能分拣。本示例使用 Universal Robots UR5e cobot 执行垃圾箱拣选任务,从而成功检测并分类物体。cobot 的末端执行器是一个吸力抓手,它使 cobot 能够拾…...

linuxCNC(五)HAL驱动的指令介绍

HAL驱动的构成 指令举例详解 从终端进入到HAL命令行,执行halrun,即可进入halcmd命令行 # halrun指令描述oadrt加载comoonent,loadrt threads name1 period1创建新线程loadusr halmeter加载万用表UI界面loadusr halscope加载示波器UI界面sho…...

STM32 进阶 定时器3 通用定时器 案例2:测量PWM的频率/周期

需求分析 上一个案例我们输出了PWM波,这个案例我们使用输入捕获功能,来测试PWM波的频率/周期。 把测到的结果通过串口发送到电脑,检查测试的结果。 如何测量 1、输入捕获功能主要是:测量输入通道的上升沿和下降沿 2、让第一个…...

第一节、电路连接【51单片机-TB6600驱动器-步进电机教程】

摘要:本节介绍如何搭建一个51单片机TB6600驱动器步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制系统 ②USB转TTL模块 ③开关电源 ④TB6600步进电机驱动器 ⑤二相四线步进电机 ⑥电…...

【通俗理解】Koopman算符与非线性动力系统分析

【通俗理解】Koopman算符与非线性动力系统分析 关键词: #Koopman算符 Koopman Operator #非线性动力系统 Nonlinear Dynamical System #无穷维线性算子 Infinite-Dimensional Linear Operator #演化分析 Evolution Analysis #Bernard Koopman Bernard Koopman 第…...

mybatis plus打印sql日志

1、官方文档 使用配置 | MyBatis-Plus 2、日志实现 MyBatis-Plus 提供了多种日志实现(log-impl),用于记录 SQL 语句和相关操作,帮助开发者进行调试和监控数据库操作。以下是一些可用的日志实现及其说明: StdOutImpl…...

ObjectMapper

ObjectMapper 是 Jackson 库中非常重要的一个类,它是 JSON 和 Java 对象之间进行序列化与反序列化的核心工具。ObjectMapper 的底层实现是基于 Jackson 的数据绑定模型,它将 Java 对象与 JSON 数据转换为互通格式。 1. ObjectMapper 的设计与核心功能 O…...

新增白名单赋予应用安装权限

目录 相关问题 具体实现 相关问题 安装app到/data/分区时&#xff0c;如何在安装阶段就赋予权限&#xff0c;无需请求权限 具体实现 frameworks/base/core/res/res/values/config.xml <!-- For whitelis apk --><string-array translatable"false" nam…...

传奇996_51——脱下装备,附加属性设为0

奶奶的lua怎么都修改不了&#xff0c;可以调用txt的 ; LINKPICKUPITEM ; ChangeitemaddvaLue -1 5 0 ; GETITEMADDVALUE 3 5 M10 ; SENDUPGRADEITEM ; SENDMSG 9 你的衣服附加了<$STR(M10)>点防御属性. 或者lua callscriptex(actor,“LINKPICKUPITEM”) callscriptex(…...

【Mac】安装Gradle

1、说明 Gradle 运行依赖 JVM&#xff0c;需要先安装JDK&#xff0c;Gradle 与 JDK的版本对应参见&#xff1a;Java Compatibility IDEA的版本也是有要求Gradle版本的&#xff0c;二者版本对应关系参见&#xff1a;Third-Party Software and Licenses 本次 Gradle 安装版本为…...

MySQL中的redoLog

在数据库系统中&#xff0c;redo log&#xff08;重做日志&#xff09;用于记录所有已提交事务的修改操作&#xff0c;它的主要目的是确保在系统崩溃或故障后&#xff0c;能够恢复数据库到崩溃前的状态。Redo log 记录的是事务修改的数据的具体操作&#xff0c;而不是数据本身。…...

Windows 安装 MySQL

1.下载 MySQL 安装包 访问&#xff1a;MySQL :: Download MySQL Installer选择适合的版本。推荐下载 MySQL Installer for Windows&#xff0c;该安装包包含所有必要的组件选择 Windows (x86, 32-bit), MSI Installer 或 Windows (x86, 64-bit), MSI Installer 2.运行安装程序…...

yocto的xxx.bb文件在什么时候会拷贝文件到build目录

在 Yocto 中&#xff0c;.bb 文件用于描述如何构建和安装一个软件包&#xff0c;而文件在构建过程中的拷贝操作通常会在某些特定的步骤中进行。具体来说&#xff0c;文件会在以下几个阶段被拷贝到 build 目录&#xff08;或者更准确地说&#xff0c;拷贝到目标目录 ${D}&#x…...

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…...

Java基础复习

“任何时候我也不会满足&#xff0c;越是多读书&#xff0c;就越是深刻地感到不满足&#xff0c;越感到自己知识贫乏。科学是奥妙无穷的。” ——马克思 目录 一、方法&方法重载 二、运算符 三、数据类型 四、面向对象 1. 面向对象思想 2. 引用传递 3. 访问权限修饰…...

简易图书管理系统

javawebjspservlet 实体类 package com.ghx.entity;/*** author &#xff1a;guo* date &#xff1a;Created in 2024/12/6 10:13* description&#xff1a;* modified By&#xff1a;* version:*/ public class Book {private int id;private String name;private double pri…...

结构型-组合模式(Composite Pattern)

什么是组合模式 又名部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#xff0c;它创建了对象组的树形结构。 结构 抽象根节点&#xff08;Co…...

【知识堂】大数据

一、大数据的基本概念 什么是大数据&#xff1f; 大数据&#xff08;Big Data&#xff09;是指无法通过传统工具和方法在合理时间内处理的海量数据集合。其关键特征是4V&#xff0c;即数据量大&#xff08;Volume&#xff09;、数据种类多&#xff08;Variety&#xff09;、处…...

ms-swift微调框架入门:快速掌握LoRA微调与模型合并技巧

ms-swift微调框架入门&#xff1a;快速掌握LoRA微调与模型合并技巧 1. 引言 在当今大模型技术快速发展的背景下&#xff0c;如何高效地对大型语言模型进行微调成为了许多开发者和研究者的关注焦点。ms-swift作为一款强大的微调框架&#xff0c;提供了丰富的功能和技术支持&am…...

国产数据库新选择:SpringBoot集成KingbaseES的性能优化全攻略

SpringBoot集成KingbaseES性能调优实战指南 当企业级应用遇到国产数据库新贵KingbaseES&#xff0c;性能优化便成为开发者最关心的核心议题。作为一款兼容PostgreSQL协议的高性能国产数据库&#xff0c;KingbaseES在金融、政务等关键领域展现出越来越强的竞争力。但要让SpringB…...

YOLOv8工业缺陷检测推理延迟骤降63%:基于TensorRT量化+ONNX Runtime定制化内核的完整链路

第一章&#xff1a;YOLOv8工业缺陷检测推理延迟骤降63%&#xff1a;基于TensorRT量化ONNX Runtime定制化内核的完整链路在高吞吐产线场景下&#xff0c;YOLOv8原生PyTorch模型在Jetson AGX Orin上单帧推理延迟达84.2ms&#xff08;输入尺寸640640&#xff09;&#xff0c;严重制…...

建议收藏|盘点2026年顶尖配置的AI论文平台

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的AI论文平台&#xff0c;覆盖选题构思、文献分析、内容生成、格式排版四大核心场景&#xff0c;帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首选&…...

【独家首发】Python扩展安全成熟度模型(PESMM v1.2):覆盖编译期/加载期/运行期的9维评分体系,仅限前500名开发者免费获取评估工具包

第一章&#xff1a;Python扩展模块安全概述Python 扩展模块&#xff08;如 C/C 编写的 .so/.dll 文件或 Cython 生成的二进制模块&#xff09;在提升性能的同时&#xff0c;也引入了原生层特有的安全风险。与纯 Python 代码不同&#xff0c;扩展模块直接操作内存、调用系统 API…...

Path of Building终极指南:5分钟掌握流放之路最强Build规划工具

Path of Building终极指南&#xff1a;5分钟掌握流放之路最强Build规划工具 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building&#xff08;简称PoB&#x…...

FastAPI 2.0 AI流式响应性能瓶颈分析与突破方案(源码级内存泄漏定位实录)

第一章&#xff1a;FastAPI 2.0 AI流式响应性能瓶颈分析与突破方案&#xff08;源码级内存泄漏定位实录&#xff09;在高并发AI推理服务场景下&#xff0c;FastAPI 2.0 的 StreamingResponse 在持续返回大模型 token 流时&#xff0c;常出现 RSS 内存持续增长、GC 延迟升高、最…...

WSABuilds社区活动:线上线下聚会与开发者大会参与指南

WSABuilds社区活动&#xff1a;线上线下聚会与开发者大会参与指南 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root sol…...

AI大模型入门指南:泛化、通用、涌现三大特征解析,小白也能学会收藏!

本文深入浅出地介绍了AI大模型的主要特征&#xff0c;包括泛化性、通用性和涌现性&#xff0c;并以ChatGPT为例&#xff0c;阐述了其如何通过巨量参数和深度网络结构展现强大的自然语言理解和生成能力。文章还详细分类并介绍了云侧大模型&#xff08;如通用大模型和行业大模型&…...

Simulink频域分析避坑指南:如何准确获取谐振频率(含MATLAB代码)

Simulink频域分析实战&#xff1a;谐振频率精准提取方法论与MATLAB实现 在控制系统设计与分析领域&#xff0c;频域特性是评估系统动态性能的核心指标之一。而谐振频率作为频域响应中的关键特征点&#xff0c;直接影响着系统的稳定性和响应速度。然而&#xff0c;许多工程师在使…...