這篇文章主要講解了“ASP.NET Core中間件的壓縮及緩存介紹”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET Core中間件的壓縮及緩存介紹”吧!
創(chuàng)新互聯(lián)服務項目包括蔡甸網(wǎng)站建設、蔡甸網(wǎng)站制作、蔡甸網(wǎng)頁制作以及蔡甸網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蔡甸網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到蔡甸省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!前言
今天給大家介紹一下在 ASP.NET Core 日常開發(fā)中用的比較多的兩個中間件,它們都是出自于微軟的 ASP.NET 團隊,他們分別是Microsoft.AspNetCore.ResponseCompression
和Microsoft.AspNetCore.ResponseCaching
, 下面讓我們一起看看的功能以及如何去使用吧。
Getting Started
Microsoft.AspNetCore.ResponseCompression
Microsoft.AspNetCore.ResponseCompression
這個中間件是 .NET Core 1.1 版本中新增加的,看名字應該知道,它主要是負責對輸出的內(nèi)容進行壓縮, 那么在我們WEB開發(fā)中主要就是 GZip 壓縮了。
Gzip 壓縮是我們在 WEB 中經(jīng)常會使用的一項性能優(yōu)化技術,它可以對頁面輸出的內(nèi)容使用壓縮算法(GZip)進行體積的壓縮, 那在以前的時候,我們可以使用 IIS 來做這項工作,但是現(xiàn)在我們的程序脫離 IIS了,就必須有一個中間件來幫我們做這件事情了,它就是我們要介紹的這個中間件。
1、添加 Microsoft.AspNetCore.ResponseCompression 包
你可以使用 Visual Studio 打開 NuGet 包管理器控制臺輸入一下命令安裝
Install-Package Microsoft.AspNetCore.ResponseCompression
也可以使用 NuGet包管理器UI界面安裝。
添加完成之后,你就可以在 project.json 中看到你添加的包了。注意目前版本是 1.0.0.
2、更新 Startup.cs 文件
修改Startup
, 在ConfigureServices 和Configure 兩個方法中添加如下代碼:
public class Startup { ... public void ConfigureServices(IServiceCollection services) { services.AddResponseCompression(); ... } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { app.UseResponseCompression(); ... } }
現(xiàn)在你就可以測試一下輸入的 Http Response 是否被壓縮了。
前:
后:
通過 前 后 對比,可以看出來,在 Response Headers
里面多了一個 Content-Encoding:gzip
的頭部信息,說明我們的中間件生效了。
Microsoft.AspNetCore.ResponseCaching
Microsoft.AspNetCore.ResponseCaching
這個中間件也是 .NET Core 1.1 版本中新增加的,同樣看名字應該知道,它主要是負責對輸出的內(nèi)容進行緩存設置。在以前我們可以同樣在 IIS 中設置這些東西,但是粒度可能并沒有這么細。
我之前寫過一篇關于 ASP.NET Core 緩存的文章,里面介紹了 ASP.NET Core MVC 中的 Response 緩存,它是通過一個 ResponseCacheAttribute 來實現(xiàn)的設置緩存頭信息:
[ResponseCache(VaryByHeader ="Accept-Encoding", Location = ResponseCacheLocation.Any, Duration = 10)] public IActionResult About() { }
那,除了 MVC 提供的 ResponseCacheAttribute
外,還有另外一種方式設置緩存頭信息,如下:
public IActionResult About() { Response.GetTypedHeaders().CacheControl = new CacheControlHeaderValue() { Public = true, MaxAge = TimeSpan.FromSeconds(10) }; Response.Headers[HeaderNames.Vary] = new string[] { "Accept-Encoding" }; }
這兩種方式,最終的效果是一致的。
有了這些頭信息之后,我們就可以在服務端里面這個中間件干些什么事情了。所以,該中間件將會在適當?shù)臅r候讀取這些頭信息,然后緩存到本地緩存里面,當再有請求進來的時候會直接跳過action,讀取緩存信息進行返回。
下面,我們一起來看看怎么樣添加到我們的項目中吧,很簡單。
1、添加 Microsoft.AspNetCore.ResponseCaching 包
你可以使用 Visual Studio 打開 NuGet 包管理器控制臺輸入一下命令安裝
Install-Package Microsoft.AspNetCore.ResponseCaching
2、更新 Startup.cs 文件
修改 Startup
, 在ConfigureServices 和Configure 兩個方法中添加如下代碼:
public class Startup { ... public void ConfigureServices(IServiceCollection services) { services.AddResponseCaching(); ... } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { app.UseResponseCaching(); ... } }
輸入的頭信息如下:
詳細示例可以看這里.
注意:上面的示例在 Chrome 瀏覽器中,當你按 F5 或者右鍵刷新頁面時候, Http Response Header 中的 Control-Cache: max-age 有時候可能會不生效,這是因為 Chrome 瀏覽器有很智能的算法來猜測你當前的行為是真的想刷新還是取緩存。 所以你可以試著把你的地址放入到一個HTML的Link中或者新開一個選項卡鍵入地址嘗試。而Edge和IE瀏覽器行為是符合預期的。
感謝各位的閱讀,以上就是“ASP.NET Core中間件的壓縮及緩存介紹”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對ASP.NET Core中間件的壓縮及緩存介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設公司,,小編將為大家推送更多相關知識點的文章,歡迎關注!