緩存是一種通過存儲資源的備份,在請求時傳回資源備份的技術。ASP.NET Core 支援多種形式的緩存,既支援基于 HTTP 的緩存,也支援記憶體緩存和分布式緩存,還提供響應緩存中間件
HTTP 緩存,服務端傳回資源時,能夠在響應消息中包含 HTTP 緩存消息頭
驗證緩存資源的方式有兩種:
通過響應消息頭中的 Last-Modified
使用實體标簽消息頭
ASP.NET Core 提供的 [ResponseCache] 特性能夠為資源指定 HTTP 緩存行為
在 AuthorController 中為 GetAuthorAsync 方法添加該特性
請求該接口時,可以看到響應消息頭中包含了緩存資訊
當應用中多個接口需要添加同樣的緩存行為時,為了避免重複,還可以使用緩存配置來完成同樣的功能
在 Startup 的 ConfigureServices 中添加
接着在特性中使用即可
當緩存的資源已經過時後,用戶端需要到伺服器驗證資源是否有效,可以通過實體标簽頭驗證
GetHash 方法内容如下:
響應緩存中間件,使用它能夠為應用程式添加伺服器端緩存功能
在 Startup 中配置響應緩存
添加響應緩存服務時,ResponseCachingOptions 包含3個屬性:
SizeLimit:緩存大小
MaximumBodySize:響應正文最大值
UseCaseSensitivePaths:是否區分請求路徑大小寫
響應緩存中間件同樣使用特性設定
當服務端第二次接收同樣的請求時,它将從緩存直接響應用戶端
VaryByQueryKeys 屬性可以根據不同的查詢關鍵字來區分不同的響應
記憶體緩存,利用伺服器上的記憶體來實作對資料的緩存
需要先在 Startup 中添加該服務
然後在需要緩存的位置注入 IMemoryCache 接口,并調用相關方法
還可以使用 MemoryCacheEntryOptions 對象來控制緩存時間和優先級
分布式緩存,有效解決記憶體緩存不足的問題,由多個應用伺服器共享
ASP.NET Core 使用分布式緩存,需要用到 IDistributedCache
ASP.NET Core 提供了 IDistributedCache 接口的3種實作方式:
分布式記憶體緩存
分布式 SQLServer 緩存
分布式 Redis 緩存
分布式記憶體緩存實際上并非分布式緩存,與記憶體緩存一樣,可用于開發測試階段
分布式 SQLServer 緩存使用前,需要使用指令 dotnet sql-cache create 建立緩存資料庫
添加nuget
之後在容器種注入服務
同時,在 appsettings.json 配置檔案中添加 Redis 服務配置資訊
然後,在 AuthorController 注入 IDistributedCache 接口即可使用
接下來,在 GetAuthorsAsync 方法中使用
由于 Json.NET 在序列化集合對象時會将其作為數組處理,因而會忽略集合對象中的其他屬性,為了保留這些屬性,需要自定義 JsonConvert 類

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。
歡迎轉載、使用、重新釋出,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。
如有任何疑問,請與我聯系 ([email protected]) 。