天天看點

《ASP.NET Core 與 RESTful API 開發實戰》-- (第7章)-- 讀書筆記(上)

緩存是一種通過存儲資源的備份,在請求時傳回資源備份的技術。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 類

《ASP.NET Core 與 RESTful API 開發實戰》-- (第7章)-- 讀書筆記(上)
《ASP.NET Core 與 RESTful API 開發實戰》-- (第7章)-- 讀書筆記(上)

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。

歡迎轉載、使用、重新釋出,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。

如有任何疑問,請與我聯系 ([email protected]) 。