跳過到頁腳內容
.NET幫助

LazyCache C#(對開發者如何理解的工作)

快取是一種在軟體開發中用於提升效能的基本技術,透過將常被訪問的資料存儲在記憶體或更快的存儲介質中。 在C#中,LazyCache是一個受歡迎的程式庫,可以簡化線程安全快取的實作,使開發者能夠在重負載場景下有效利用快取。

什麼是LazyCache?

LazyCache是一款為.NET/ASP.NET Core應用程式提供基礎快取功能的程式庫,提供簡單且直觀的API來快取數據。 它以NuGet套件的形式提供,可輕鬆整合到C#專案中。 LazyCache的主要目標是簡化快取實作,並通過使用雙重鎖定快取模式減少管理快取資訊所需的樣板代碼。

LazyCache的主要特點:

  1. 簡單的API: LazyCache提供簡單易懂的API來新增、擷取和移除快取項目。 開發者可以快速將快取整合到應用程式或網路服務呼叫中,無需處理複雜的快取機制。

  2. 自動過期: LazyCache支援基於可配置的過期策略自動過期快取項目。 開發者可以指定快取項目的過期時間,LazyCache會從快取數據中移除過期項目。

  3. 記憶體內快取: LazyCache預設將快取項目存儲在記憶體中,適合需要快速訪問快取數據的場景。 記憶體內快取可確保低延遲和高吞吐量的快取數據訪問。

  4. 線程安全操作: LazyCache提供線程安全的操作來新增、擷取和移除快取項目。 這確保了多個線程可以同時訪問快取,而不會有數據損壞或不一致的風險。

  5. 可擴展性: LazyCache被設計為可擴展,允許開發者根據具體需求自訂快取行為。 它提供了掛勾以實作自定義的快取策略,如分散式快取或有持久性的快取。

如何在C#中使用LazyCache:

由於其直觀的API,在C#中使用LazyCache是非常簡單的。 以下是一個基本示例,演示如何使用LazyCache來快取方法呼叫的結果:

using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
$vbLabelText   $csharpLabel

在這個示例中,GetData()方法的結果。 GetOrAdd()方法擷取與指定鍵("dataKey")關聯的快取數據(如果存在)。 如果數據未被快取,提供的委託FetchDataFromDatabase()將被執行以獲取數據,然後將其快取以供將來使用。

IronPDF 簡介

LazyCache C# (對開發人員的運作方式):圖1 - IronPDF

IronPDF是一個強大的C# PDF程式庫,允許在.NET專案中生成、編輯和提取PDF文件的內容。 以下是一些主要功能:

  1. HTML 至 PDF 轉換:

    • 將HTML、CSS和JavaScript內容轉換為PDF格式。
    • 使用Chrome渲染引擎以獲得像素完美的PDF。
    • 從 URL、HTML 檔案或 HTML 字串生成 PDF。
  2. 圖片和內容轉換:

    • 將圖像轉換為PDF,或從PDF中提取圖像。
    • 從現有的PDF中提取文本和圖像。
    • 支援各種圖像格式。
  3. 編輯和操控:

    • 為PDF設置屬性、安全性和權限。
    • 添加數字簽名。
    • 編輯元數據及修訂歷史。
  4. 跨平台支援:

    • 適用於 .NET Core (8、7、6、5 和 3.1+),.NET Standard (2.0+),以及 .NET Framework (4.6.2+)。
    • 相容於 Windows、Linux 和 macOS。
    • 可在 NuGet 上找到,方便安裝。

使用IronPDF和LazyCache生成PDF文件

首先,使用 Visual Studio 創建一個主控台應用程式,如下所示。

LazyCache C# (對開發人員的運作方式):圖2 - 控制台應用程式

提供專案名稱。

LazyCache C# (對開發人員的運作方式):圖3 - 專案配置

提供.NET版本。

LazyCache C# (對開發人員的運作方式):圖4 - 目標框架

安裝IronPDF套件。

LazyCache C# (對開發人員的運作方式):圖5 - IronPDF

安裝LazyCache套件以添加快取的方法呼叫。

LazyCache C# (對開發人員的運作方式):圖6 - LazyCache

using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
$vbLabelText   $csharpLabel

程式碼說明

  • 實例化渲染器: 創建ChromePdfRenderer的實例以處理HTML內容轉換為PDF格式。

  • Define Content: HTML content ("

    Demo LazyCache and IronPDF

    ", "

    Create CachingService

    ", etc.) is prepared. 這些內容將被渲染為PDF並快取以供重複使用。

  • 創建快取服務: 使用LazyCache的IAppCache實例化一個快取服務。 此懶加載快取服務管理快取數據的存儲和擷取。

  • 快取鍵: 指派一個唯一標識符("uniqueKey")來代表被快取的PDF內容。

  • 定義高成本方法: 定義一個工廠方法expensiveLongRunMethod來生成可快取的數據。 此方法調用ChromePdfRenderer以將HTML內容渲染為PDF。 生成的PDF隨後被存儲並以字串形式返回。

  • 擷取或新增到快取: 呼叫服務的cacheKey關聯的快取值。 如果該值不存在於快取中,則呼叫expensiveLongRunMethod以計算它,將其存儲到快取中並返回。 如果該值已被快取,則直接返回。

  • 輸出: 將快取的PDF內容(作為字串)打印到控制台Console.WriteLine(cachedValue),展示快取數據的擷取。

輸出

LazyCache C# (對開發人員的運作方式):圖7 - 控制台輸出

PDF

LazyCache C# (對開發人員的運作方式):圖8 - PDF輸出

IronPDF授權(提供試用)

IronPDF套件需要授權才能運行和生成PDF。 在應用程式開始之前添加以下代碼。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
$vbLabelText   $csharpLabel

IronPDF的試用授權可在試用授權頁面上獲取

結論

LazyCache透過提供簡單的API和快取項目自動過期功能,簡化了C#應用程式中的快取實作。 通過將LazyCache整合到您的專案中,您可以通過有效快取經常訪問的數據來改善效能,減少延遲,並以一種原子且整潔的方式優化資源利用率。 無論您是在構建網頁應用程式、API還是服務,LazyCache都可以是一個增強C#應用程式效能和擴展性的有力工具。

另一方面,IronPDF在.NET應用程式中處理PDF文檔方面脫穎而出,成為一個強大且多功能的C#庫。 它的強大功能包括創建、編輯、渲染HTML為PDF和以程式方式操作PDF。 透過加密和數位簽章的安全文檔處理功能,IronPDF使開發者能夠有效管理和自訂PDF工作流程,這使它成為C#開發中文檔管理和生成任務的重要工具。

常見問題解答

什麼是 LazyCache,它對 .NET 應用程式有何好處?

LazyCache 是專為 .NET/ASP.NET Core 應用程式設計的快取提供程式庫。它透過簡化快取的實作、減少樣板代碼,以及通過記憶內儲存增強效能來為這些應用程式帶來好處,從而減少不必要的數據檢索操作。

如何使用 LazyCache 在 C# 中實作快取?

要在 C# 中使用 LazyCache 實作快取,您需要通過 NuGet 安裝此庫並使用 LazyCache 的 CachingService 設定快取服務。您可以使用 GetOrAdd 方法來快取數據,該方法儲存方法調用的結果並提供唯一的鍵與委派以在數據尚未快取時取得數據。

LazyCache 如何確保數據在快取中保持最新?

LazyCache 通過支援基於可配置政策的自動過期來確保快取的數據保持最新。此功能允許開發人員設定過期時間,以確保不會向用戶提供過時的數據。

什麼使 LazyCache 執行緒安全?

LazyCache 的設計使其執行緒安全,允許多個執行緒與快取互動而不會危及數據的損壞。它使用雙重鎖定機制確保在多執行緒應用程式中安全執行快取操作。

如何在 C# 專案中優化 PDF 文件管理?

您可以使用 IronPDF 在 C# 專案中優化 PDF 文件管理,該產品提供強大的功能,如 HTML 到 PDF 的轉換、內容擷取和 PDF 編輯。它支援跨平台相容性並可與 LazyCache 集成來快取生成的 PDF 以提高效能。

LazyCache 可用於分散式快取嗎?

是的,LazyCache 提供可擴展性,允許開發人員實作自定義的快取策略,包括分散式快取。這種靈活性使其能夠與其他快取系統集成,以支援分散式環境。

將 C# PDF 庫與 LazyCache 一起使用有什麼優勢?

使用像 IronPDF 這樣的 C# PDF 庫與 LazyCache 結合,可以高效地生成和快取 PDF 文件。這種組合通過避免重複的 PDF 生成來提高應用程式的效能,並提供對頻繁請求文件的快速存取。

使用像 IronPDF 這樣的 C# PDF 庫的許可要求是什麼?

IronPDF 需要許可證以使用其完整的功能。開發人員可以從 IronPDF 網站開始試用許可證,並必須在其應用程式代碼中包含許可證金鑰以啟用庫來生成 PDF。

LazyCache 如何提高應用程式效能?

LazyCache 通過將經常存取的數據儲存在記憶中,減少重複的數據檢索操作來提高應用程式效能。這導致更快的響應時間和減少對資料庫或外部數據來源的負載。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me