ASP.NET Core 中的快取概觀

作者:Rick AndersonKirk Larkin

記憶體內部快取

記憶體內部快取會使用伺服器記憶體來儲存快取的資料。 這種類型的快取適合使用工作階段親和性的單一伺服器或多部伺服器。 工作階段親和性也稱為黏性工作階段。 工作階段親和性表示來自用戶端的要求一律會路由至相同伺服器進行處理。

如需詳細資訊,請參閱 ASP.NET Core 中的記憶體內部快取疑難排解 Azure 應用程式閘道工作階段親和性問題

分散式快取

當應用程式裝載於雲端或伺服器陣列時,請使用分散式快取將資料儲存在記憶體中。 快取會跨處理要求的伺服器共用。 如果用戶端的快取資料可供使用,用戶端可以提交要求供群組中的任何伺服器處理。 ASP.NET Core 可搭配 SQL Server、RedisNCache 分散式快取使用。

如需詳細資訊,請參閱 ASP.NET Core 中的分散式快取

快取標籤協助程式

使用快取標籤協助程式從 MVC 檢視或 Razor Page 快取內容。 快取標籤協助程式會使用記憶體內部快取來儲存資料。

如需詳細資訊,請參閱 ASP.NET Core MVC 中的快取標籤協助程式

分散式快取標籤協助程式

使用分散式快取標籤協助程式,在分散式雲端或 Web 服務器陣列案例中,從 MVC 檢視或 Razor Page 快取內容。 分散式快取標籤協助程式會使用 SQL Server、RedisNCache 來儲存資料。

如需詳細資訊,請參閱 ASP.NET Core 中的分散式快取標籤協助程式

回應快取

回應快取中介軟體:

  • 根據 HTTP 快取標頭啟用快取伺服器回應。 實作標準 HTTP 快取語意。 根據 Proxy 之類的 HTTP 快取標頭快取。
  • 通常對 Razor Pages 之類的 UI 應用程式並不適用,因為瀏覽器通常會設定造成無法快取的要求標頭。 輸出快取可在 ASP.NET Core 7.0 和更新版本中取得,對 UI 應用程式有益。 使用輸出快取,設定會決定應該獨立於 HTTP 標頭快取的內容。
  • 對於來自符合快取條件用戶端的公用 GET 或 HEAD API 要求可能會有幫助。

若要測試回應快取,請使用 Fiddler 或其他可明確設定要求標頭的工具。 明確設定標頭是測試快取的慣用方式。 如需詳細資訊,請參閱疑難排解

輸出快取

輸出快取中介軟體可讓您快取 HTTP 回應。 輸出快取與回應快取不同,在以下方面:

  • 快取行為可在伺服器上設定。

    回應快取行為是由 HTTP 標頭定義。 例如,當您使用 Chrome 或 Edge 瀏覽網站時,瀏覽器會自動傳送 Cache-control: max-age=0 標頭。 此標頭實際上會停用回應快取,因為伺服器會遵循用戶端所提供的指示。 即使伺服器有全新快取的回應,也會針對每個要求傳回新的回應。 使用輸出快取,用戶端不會覆寫您在伺服器上設定的快取行為。

  • 快取儲存媒體可延伸。

    預設會使用記憶體。 回應快取僅限於記憶體。

  • 您可以透過程式設計方式使選取的快取項目失效。

    回應快取對 HTTP 標頭的相依性可讓您使用少數選項來使快取項目失效。

  • 資源鎖定可降低逃竄和驚群問題的風險。

    當經常使用的快取項目被撤銷,而太多要求嘗試同時重新填入相同的快取項目時,就會發生快取逃竄驚群問題類似:對尚不在快取項目中相同回應的要求激增。 資源鎖定可確保指定回應的所有要求都會等候第一個要求填入快取。 回應快取沒有資源鎖定功能。

  • 快取重新驗證可將頻寬使用量降至最低。

    快取重新驗證表示伺服器可以傳回 304 Not Modified HTTP 狀態碼,而不是快取的回應本文。 此狀態碼會通知用戶端,對要求的回應與先前收到的回應沒有變更。 回應快取不會執行快取重新驗證。

記憶體內部快取

記憶體內部快取會使用伺服器記憶體來儲存快取的資料。 這種類型的快取適合使用工作階段親和性的單一伺服器或多部伺服器。 工作階段親和性也稱為黏性工作階段。 工作階段親和性表示來自用戶端的要求一律會路由至相同伺服器進行處理。

如需詳細資訊,請參閱 ASP.NET Core 中的記憶體內部快取疑難排解 Azure 應用程式閘道工作階段親和性問題

分散式快取

當應用程式裝載於雲端或伺服器陣列時,請使用分散式快取將資料儲存在記憶體中。 快取會跨處理要求的伺服器共用。 如果用戶端的快取資料可供使用,用戶端可以提交要求供群組中的任何伺服器處理。 ASP.NET Core 可搭配 SQL Server、RedisNCache 分散式快取使用。

如需詳細資訊,請參閱 ASP.NET Core 中的分散式快取

快取標籤協助程式

使用快取標籤協助程式從 MVC 檢視或 Razor Page 快取內容。 快取標籤協助程式會使用記憶體內部快取來儲存資料。

如需詳細資訊,請參閱 ASP.NET Core MVC 中的快取標籤協助程式

分散式快取標籤協助程式

使用分散式快取標籤協助程式,在分散式雲端或 Web 服務器陣列案例中,從 MVC 檢視或 Razor Page 快取內容。 分散式快取標籤協助程式會使用 SQL Server、RedisNCache 來儲存資料。

如需詳細資訊,請參閱 ASP.NET Core 中的分散式快取標籤協助程式

回應快取

回應快取中介軟體:

  • 根據 HTTP 快取標頭啟用快取伺服器回應。 實作標準 HTTP 快取語意。 根據 Proxy 之類的 HTTP 快取標頭快取。
  • 通常對 Razor Pages 之類的 UI 應用程式並不適用,因為瀏覽器通常會設定造成無法快取的要求標頭。 輸出快取可在 ASP.NET Core 7.0 和更新版本中取得,對 UI 應用程式有益。 使用輸出快取,設定會決定應該獨立於 HTTP 標頭快取的內容。
  • 對於來自符合快取條件用戶端的公用 GET 或 HEAD API 要求可能會有幫助。

若要測試回應快取,請使用 Fiddler 或其他可明確設定要求標頭的工具。 明確設定標頭是測試快取的慣用方式。 如需詳細資訊,請參閱疑難排解

輸出快取

輸出快取可在 .NET 7 和更新版本中取得。