序
今天给大家介绍两个ASP.NET Core日常开发中用到的中间件,都是微软ASP.NET团队的。他们是微软。和微软。让我们看看这些函数以及如何使用它们。
入门指南
微软。响应压缩
中间件微软。aspnetcore.responsecompression是在的1.1版本中新添加的。netcore。大家从名字就应该知道它主要负责压缩输出内容,所以在我们的WEB开发中主要是GZip压缩。
GZip压缩是我们在WEB中经常使用的一种性能优化技术。它可以通过使用压缩算法(Gzip)来压缩页面输出的体积。在过去,我们可以使用IIS来做这项工作,但是现在我们的程序与IIS分离,我们必须有一个中间件来帮助我们完成这项工作,这就是我们想要介绍的中间件。
1.添加微软。aspnetcore.responsecompression包
您可以使用Visual Studio打开NuGet包管理器控制台,并输入命令进行安装
安装包微软。aspnetcore。responsecompression也可以使用NuGet包管理器UI界面安装。
添加后,可以看到在project.json中添加的包注意,当前版本是1.0.0。
2.更新启动文件
修改启动,并在配置服务和配置方法中添加以下代码:
公共类启动{.public void ConfigureServices(IServiceCollection services){ services。addresponseccompression();}公共void Configure(IApplicationBuilder应用程序,ILoggerFactory logger factory){ app。UseResponseCompression();}}现在您可以测试输入的Http Response是否被压缩。
正面:
之后:
通过前后对比,我们可以看到响应头中有一个额外的Content-Encoding:gzip的头信息,说明我们的中间件是有效的。
微软。响应教学
中间件微软。ASP.NET core . response cache也是在的1.1版本中新添加的。它主要负责缓存输出内容。我们过去可以在IIS中设置这些东西,但是粒度可能没那么细。
我之前在ASP.NET写过一篇关于核心缓存的文章,介绍了ASP.NET的core MVC中的Response缓存,通过一个ResponseCacheAttribute设置缓存头信息:
[responsecache(varybyheader=' accept-encoding ',location=responsecachelocation . any,duration=10)]public interaction result about(){ }然后,除了MVC提供的ResponseCacheAttribute之外,还有另一种设置缓存头信息的方法,如下所示:
公共IActionResult About(){响应。GetTypedHeaders()。CacheControl=new CacheControlHeaderValue(){ Public=true,MaxAge=TimeSpan。from seconds(10)};回应。标题[标题名称。Vary]=新字符串[]{ ' Accept-Encoding ' };}这两种方法的最终效果是一样的。
有了这些头信息,我们可以在服务器端的中间件中做一些事情。因此,中间件将在适当的时候读取头信息,然后将其缓存在本地缓存中。当有另一个请求进来时,它会直接跳过这个动作,读取缓存的信息并返回。
接下来,让我们看看如何将其添加到我们的项目中。很简单。
1.添加微软。aspnet core . response教学包
您可以使用Visual Studio打开NuGet包管理器控制台,并输入命令进行安装
安装包微软。aspnetcore.responsecaching 2,更新Startup.cs文件
修改启动,并在配置服务和配置方法中添加以下代码:
公共类启动{.public void ConfigureServices(IServiceCollection services){ services。AddResponseCaching.}公共void Configure(IApplicationBuilder应用程序,ILoggerFactory logger factory){ app。UseResponseCaching.}}输入表头信息如下:
这里可以看到一个详细的例子。
注意:在上面的例子中,在Chrome浏览器中,当你按下F5或右键刷新页面时,有时Http Response Header中的control-cache3360max-age可能不会生效,因为Chrome浏览器有一个非常智能的算法,可以猜测你当前的行为是否真的想要刷新或获取缓存。因此,您可以尝试将您的地址放在一个HTML链接中,或者打开一个新的选项卡来键入地址。而Edge和IE浏览器的行为则符合预期。
摘要
以上就是这两个中间件的功能和使用方法,非常简单,就不多说了。希望他们对大家的学习有帮助,支持我们。