.NET幫助 Microsoft.Extensions.Caching.Memory 示例 (含 PDF) in C# Jacob Mellor 更新:6月 22, 2025 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 為了有效地建構應用程式,.NET 應用程式經常需要使用最佳化方法。 快取(Caching)是一種有效的方法,它是將經常請求的資料暫時存放在分散式快取記憶體中,以便更快速地檢索。 使用此策略可減少處理時間和伺服器負載,大幅提升應用程式效能。 此外,還可執行效能計數器,以監控並加強快取記憶體系統。 快取在這種情況下是一種有效的最佳化策略。 Microsoft.Extensions.Caching.Memory為 .NET 應用程式提供有效率的記憶體內物件快取解決方案。 如果您有策略地將 MemoryCache 與 IronPDF 一併使用,您以 PDF 為中心的應用程式的運作與回應速度將會更快。 我們探討如何將 Microsoft.Extensions.Caching.Memory C# 實例與 IronPDF 有效整合。 在本文中,我們將討論快取在 IronPDF HTML 至 PDF 轉換過程中的優勢,介紹一些有用的實作技巧,並提供在您的 IronPDF 程式中設定快取的詳細步驟。 一切完成後,您將擁有開發有效且直覺的 PDF 應用程式所需的技能與資源。 Microsoft.Extensions.Caching.Memory:.NET 中高速緩存的基礎。 快取(Caching)是許多高效能 .NET 應用程式中使用的一種方法,可將經常存取的資料儲存在記憶體中以便快速檢索。 Microsoft.Extensions是可存取的眾多快取選項之一。 Caching.Memory是一個特別強大且適應性高的選項。 這個函式庫是較大的 Microsoft.Extensions.Caching 命名空間的一個元件,提供一個直接但有效的記憶體快取方法。 "Microsoft.Extensions.Caching.Memory"內的關鍵類型 IMemoryCache。 此介面代表了使用記憶體快取的基本能力。 它提供了管理快取詞條以及新增、擷取和移除這些詞條的方法。 將其視為您快取處理的主要切入點。 MemoryCache IMemoryCache 的實際實作在這個類別中。 它為快取項目提供管理和真正的記憶體儲存。 依賴注入通常用於 ASP.NET Core 應用程式,以擷取 MemoryCache 的實例。 MemoryCacheEntryOptions。 您可以使用此類別指定特定快取項的組態設定。 這些設定規範的內容包括 到期:您可以設定滑動到期視窗 (如果在某個時間間隔內沒有存取,則條目就會過期) 或絕對到期時間 (條目會自動過期)。 優先順序:這會影響是否在快取記憶體填滿時驅逐項目。優先順序較高的項目被移除的機率較低。 驅動後回呼:這可讓您微調資料過期時的處理邏輯。 在關鍵資料需要刷新、資源管理和日誌記錄的情況下,它尤其有用。 CacheEntry 在快取記憶體中,此類型表示單一項目。 它提供了擷取大小細節、到期設定和快取值的方法與屬性。 本質上,它包含了快取記憶體中保存的特定資料的所有資訊。 ICacheEntry。 此介面概述了可在快取項目上執行的基本活動,儘管它並非基本快取操作所必需。 其中包含如何擷取數值和到期詳細資訊的說明。 這種情況在需要擷取字串關鍵字的場合較為普遍。 此介面由 CacheEntry 類實作,提供這些功能的實作實作。 安裝和設定 Microsoft.Extensions.Caching.Memory 在應用程式啟動時,會使用記憶體在 ASP.NET Core 應用程式的服務集合內設定快取服務。 以下是已設定 Microsoft.Extensions.Caching.Memory 的 ASP.NET Core 應用程式: 安裝所需的 NuGet 套件。 首先,確保您的專案已安裝 Microsoft.Extensions.Caching.Memory 。 您可以使用 NuGet 套件管理員控制台,以下列指令安裝: Install-Package Microsoft.Extensions.Caching.Memory 或者我們可以使用 NuGet Package Manager 來安裝套件: 。 在 Startup.cs 中設定服務 開啟 Startup.cs 檔案,導覽到 ASP.NET Core 應用程式中的 ConfigureServices 方法。要設定記憶體快取服務,請新增下列程式碼: using Microsoft.Extensions.Caching.Memory; public void ConfigureServices(IServiceCollection services) { // Add memory cache service services.AddMemoryCache(); // Other service configurations... } using Microsoft.Extensions.Caching.Memory; public void ConfigureServices(IServiceCollection services) { // Add memory cache service services.AddMemoryCache(); // Other service configurations... } Imports Microsoft.Extensions.Caching.Memory Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Add memory cache service services.AddMemoryCache() ' Other service configurations... End Sub $vbLabelText $csharpLabel 記憶體快取服務物件會新增至應用程式的服務集合,並透過此程式碼進行設定。 記憶體快取系統服務透過 AddMemoryCache 函式,使用其預設組態註冊。 注入 IMemoryCache 一旦建立了快取儲存,任何需要快取的類別或元件都可以將 IMemoryCache 介面注入其中。 例如,在控制器或服務類中: public class MyService { private readonly IMemoryCache _cache; public MyService(IMemoryCache cache) { _cache = cache; } // Use _cache to perform caching operations... } public class MyService { private readonly IMemoryCache _cache; public MyService(IMemoryCache cache) { _cache = cache; } // Use _cache to perform caching operations... } Public Class MyService Private ReadOnly _cache As IMemoryCache Public Sub New(ByVal cache As IMemoryCache) _cache = cache End Sub ' Use _cache to perform caching operations... End Class $vbLabelText $csharpLabel IMemoryCache 介面提供了從記憶體快取和擷取資料的方法。 設定快取選項 透過設定快取參數,您可以改變記憶體快取的行為方式,包括大小限制、快取項目驅逐策略和快取值到期規定。 以下是如何設定快取選項的示範: public void ConfigureServices(IServiceCollection services) { // Configure cache options services.AddMemoryCache(options => { options.SizeLimit = 1024; // Set the maximum size limit for the cache options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items }); // Other service configurations... } public void ConfigureServices(IServiceCollection services) { // Configure cache options services.AddMemoryCache(options => { options.SizeLimit = 1024; // Set the maximum size limit for the cache options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items }); // Other service configurations... } Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Configure cache options services.AddMemoryCache(Sub(options) options.SizeLimit = 1024 ' Set the maximum size limit for the cache options.CompactionPercentage = 0.75 ' Set the percentage of memory to free up when the cache size exceeds the limit options.ExpirationScanFrequency = TimeSpan.FromMinutes(5) ' Set how often the cache should scan for expired items End Sub) ' Other service configurations... End Sub $vbLabelText $csharpLabel 根據您應用程式的規格修改設定。 這些說明將幫助您在 ASP.NET Core 應用程式中設定 Microsoft.Extensions.Caching.Memory ,使其能透過儲存和擷取經常存取的資料,更快速、有效率地運作。 開始 什麼是 IronPDF? 在著名的 .NET 函式庫 IronPDF 的幫助下,程式設計師可以在 .NET 應用程式中產生、編輯和顯示 PDF 文件。 從 HTML 內容、圖片或原始資料建立 PDF,只是它提供的處理 PDF 的眾多功能之一。 其他功能包括在預先存在的 PDF 文件中加入文字、影像和圖形,將 HTML 頁面轉換為 PDF,以及從 PDF 中萃取文字和影像。 以下是 IronPdf 的一些功能: 從 HTML、PNG 和未處理的資料建立 PDF。 從 PDF 中萃取圖片與文字。 新增 PDF 標頭、頁尾及水印。 具有密碼保護和加密功能的 PDF 文件。 填寫表格和數位簽章功能。 安裝 NuGet 套件 在您的專案中,請確認已安裝 IronPdf 套件。 可使用 NuGet Package Manager Console 進行安裝: Install-Package IronPdf 若要存取 ConfigureServices 函式,請開啟 ASP.NET Core 應用程式中的 Startup.cs 檔案。 要配置 IronPDF,請新增以下程式碼。 using IronPdf; public void ConfigureServices(IServiceCollection services) { // Configure IronPDF services.AddSingleton<HtmlToPdf>(); // Other service configurations... } using IronPdf; public void ConfigureServices(IServiceCollection services) { // Configure IronPDF services.AddSingleton<HtmlToPdf>(); // Other service configurations... } Imports IronPdf Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Configure IronPDF services.AddSingleton(Of HtmlToPdf)() ' Other service configurations... End Sub $vbLabelText $csharpLabel 透過將 IronPDF 的 HtmlToPdf 服務設定為單例,此程式碼可確保應用程式只建立並使用一個 HtmlToPdf 的實體。 使用 Microsoft.Extensions.Caching.Memory 與 IronPDF 。 在 .NET 應用程式中,Microsoft.Extensions.Caching.Memory 提供了一種實用的方法來儲存經常要求的資料,以便更快速地檢索。 using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using System.Net; using System.Net.Http.Headers; using IronPdf; namespace DemoWebApplication.Controllers { [ApiController] [Route("[controller]")] public class DemoController : ControllerBase { private readonly IMemoryCache _cache; private readonly HtmlToPdf _htmlToPdf; private readonly ILogger<DemoController> _logger; public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf) { _logger = logger; _cache = cache; _htmlToPdf = htmlToPdf; } [HttpGet] public FileContentResult Generate() { string fileName = "Sample.pdf"; var stream = GeneratePdf("Hello IronPDF"); return new FileContentResult(stream, "application/octet-stream") { FileDownloadName = fileName }; } private byte[] GeneratePdf(string htmlContent) { // Object key string cacheKey = "GeneratedPdf"; if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes)) { // PDF not found in cache, generate it var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent); pdfBytes = pdfDocument.BinaryData; // Cache the generated PDF with a sliding expiration of 1 hour _cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1)); } return pdfBytes; } } } using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using System.Net; using System.Net.Http.Headers; using IronPdf; namespace DemoWebApplication.Controllers { [ApiController] [Route("[controller]")] public class DemoController : ControllerBase { private readonly IMemoryCache _cache; private readonly HtmlToPdf _htmlToPdf; private readonly ILogger<DemoController> _logger; public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf) { _logger = logger; _cache = cache; _htmlToPdf = htmlToPdf; } [HttpGet] public FileContentResult Generate() { string fileName = "Sample.pdf"; var stream = GeneratePdf("Hello IronPDF"); return new FileContentResult(stream, "application/octet-stream") { FileDownloadName = fileName }; } private byte[] GeneratePdf(string htmlContent) { // Object key string cacheKey = "GeneratedPdf"; if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes)) { // PDF not found in cache, generate it var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent); pdfBytes = pdfDocument.BinaryData; // Cache the generated PDF with a sliding expiration of 1 hour _cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1)); } return pdfBytes; } } } Imports Microsoft.AspNetCore.Mvc Imports Microsoft.Extensions.Caching.Memory Imports System.Net Imports System.Net.Http.Headers Imports IronPdf Namespace DemoWebApplication.Controllers <ApiController> <Route("[controller]")> Public Class DemoController Inherits ControllerBase Private ReadOnly _cache As IMemoryCache Private ReadOnly _htmlToPdf As HtmlToPdf Private ReadOnly _logger As ILogger(Of DemoController) Public Sub New(ByVal logger As ILogger(Of DemoController), ByVal cache As IMemoryCache, ByVal htmlToPdf As HtmlToPdf) _logger = logger _cache = cache _htmlToPdf = htmlToPdf End Sub <HttpGet> Public Function Generate() As FileContentResult Dim fileName As String = "Sample.pdf" Dim stream = GeneratePdf("Hello IronPDF") Return New FileContentResult(stream, "application/octet-stream") With {.FileDownloadName = fileName} End Function Private Function GeneratePdf(ByVal htmlContent As String) As Byte() ' Object key Dim cacheKey As String = "GeneratedPdf" Dim pdfBytes() As Byte If Not _cache.TryGetValue(cacheKey, pdfBytes) Then ' PDF not found in cache, generate it Dim pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent) pdfBytes = pdfDocument.BinaryData ' Cache the generated PDF with a sliding expiration of 1 hour _cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1)) End If Return pdfBytes End Function End Class End Namespace $vbLabelText $csharpLabel 我們導入 Microsoft 和 ASP.NET Microsoft.Extensions.Caching.Memory 所需的命名空間。 我們建立了 DemoController 控制器,它是由 ControllerBase 衍生出來的。 此控制器將回應透過 HTTP 傳送的查詢。IMemoryCache 的一個實例會被注入控制器的建構器中。 為了控制服務(包括記憶體快取)的生命週期,ASP.NET Core 提供了依賴注入功能。 應用 [HttpGet] 屬性後,Generate 方法會被標記為處理從指定路由 (/Demo) 到商店的 HTTP GET 請求。 我們嘗試使用給定的快取記憶體金鑰從快取記憶體中取得 PDF 資料。 如果資料在快取記憶體中找不到,我們會使用 GeneratePdf 函式來建立新的 PDF。 在有多台應用程式伺服器的情況下,請務必設定分散式快取,以便在所有伺服器上進行一致的快取處理。 若要利用 Microsoft.Extensions.Caching.Memory,請參閱提供的說明文件和範例程式碼,以在 ASP.NET Core 應用程式中快取資料並提昇效能。 實際上,您可以調整到期政策、快取金鑰和快取行為,以符合您應用程式的需求。 對於產生成本較高或經常被多個線程存取的資料進行快取,可以改善整體使用者體驗,並大幅縮短回應時間。 結論 從各方面考慮,Microsoft.Extensions.Caching.Memory 可用於提高 .NET 應用程式的可擴展性和效能,尤其是那些基於 ASP.NET Core Framework 的應用程式。 開發人員可以利用記憶體快取改善使用者體驗、減少延遲並優化資料存取。 該函式庫提供靈活且易於使用的 API,可針對特定應用程式需求開發快取策略,無論是快取參考資料、查詢結果或計算值。 您可以透過採用快取最佳實務,並將 Microsoft.Extensions.Caching.Memory 加入您的 .NET 應用程式中,以達到明顯的速度提升和增強應用程式的反應能力。 透過利用 Microsoft.Extensions 功能,在 IronPDF 用於動態 PDF 建立和 Caching.Memory 用於有效資料快取的協助下,.NET 開發人員可以大幅提升應用程式的速度。這種強大的組合可讓開發人員透過削減伺服器負載、改善使用者體驗以及消除處理開銷,輕鬆地設計出高效能、可擴充且反應迅速的應用程式。 IronPDF 可以合理的價格購買,取得套件包括終身授權。 由於起始價格為 $799 (適用於多個系統的單一費用),因此此套件具有卓越的價值。 對於擁有授權的使用者,它提供全天候的線上工程協助。 有關收費的詳細資訊,請造訪 IronPDF 授權頁面。 請造訪這個關於 Iron Software 的頁面,瞭解 Iron Software 所製造產品的更多資訊。 常見問題解答 Microsoft.Extensions.Caching.Memory 在 .NET 應用程式中的作用是什麼? Microsoft.Extensions.Caching.Memory透過提供記憶體內物件快取,用來增強 .NET 應用程式的效能。它可以將經常存取的資料儲存在記憶體中,以便快速檢索,這在與 IronPDF 一起使用進行 PDF 作業時尤其有利。 快取如何改善 .NET 中 PDF 處理的效能? 快取可以將經常請求的 PDF 資料儲存在記憶體中,以減少處理時間和伺服器負載。當與 IronPDF 之類的函式庫整合時,可加快 PDF 的建立與操作,提升整體應用程式的速度與反應能力。 如何在 ASP.NET Core 應用程式中實作記憶體快取? 在 ASP.NET Core 中,您可以透過在 Startup.cs 的 ConfigureServices 方法中加入 services.AddMemoryCache() 來實作記憶體快取。這可與 IronPDF 無縫整合,以達到高效率的 PDF 處理與資料擷取。 IMemoryCache 在快取中扮演什麼角色? IMemoryCache 是 .NET 應用程式中用來有效管理快取項目的介面。與 IronPDF 搭配使用時,可讓開發人員快速儲存與擷取 PDF 資料,提升應用程式效能。 在 .NET 中,有哪些常用的快取設定選項? 常見的組態選項包括使用 MemoryCacheEntryOptions 設定到期政策、大小限制和驅逐策略。這些配置可以優化快取過程,尤其是在使用 IronPDF 處理 PDF 時。 開發人員如何在 .NET 應用程式中建立動態 PDF? 開發人員可以使用 IronPDF 在 .NET 應用程式中建立動態 PDF。它支援 HTML 至 PDF 的轉換、新增頁首與頁尾等功能,使其成為 PDF 產生與處理的多功能工具。 在 .NET 中整合快取與 PDF 產生的好處是什麼? 在 .NET 應用程式中使用 IronPDF 將快取與 PDF 產生整合,可大幅提升速度並減少延遲。由於可以更快速地存取常用資料,因此可以獲得更好的使用者體驗以及更具擴充性的應用程式。 如何監控和增強 .NET 應用程式中的快取系統? 可以實施效能計數器來監控 .NET 應用程式中快取系統的效率。這種監控允許進行調整和增強,以確保最佳性能,特別是在使用 IronPDF 執行 PDF 任務時。 Jacob Mellor 立即與工程團隊聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。 相關文章 更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多 更新9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 OpenAPI .NET(對於開發者的運行原理)Ocelot .NET(對於開發者的運...
更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多