IRONSOFTWAREHOME
开发者更新

Microsoft.Extensions.Caching.Memory 示例(带PDF)在C#中

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月21日

为了响应式和有效地构建应用程序,.NET 应用程序通常需要优化方法。 缓存是一种强大的方法,涉及将经常请求的材料临时存储在分布式缓存中,以便更快地检索。 这种策略可以减少处理时间和服务器负载,从而显著提高应用程序性能。 此外,可以实施性能计数器来监控和增强缓存系统。

[缓存](https://en.wikipedia.org/wiki/Cache_(computing)是此情境下的一种强大优化策略。 Microsoft.Extensions.Caching.Memory 提供了一种高效的内存对象缓存解决方案,适用于.NET应用程序。 如果您战略性地将MemoryCache缓存与IronPDF一起使用,您的以PDF为中心的应用程序将运行和响应得更快。

我们探讨如何高效整合Microsoft.Extensions.Caching.Memory C#示例与IronPDF。 在本文中,我们将讨论缓存的优势在于IronPDF HTML 转 PDF 转换过程,提供一些有用的实现技巧,并提供详细的逐步讲解,配置您 IronPDF 程序中的缓存。 完成后,您将具备开发高效直观的PDF应用程序所需的技能和资源。

Microsoft.Extensions.Caching.Memory:.NET中缓存的基础

缓存是一种在许多高性能.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 包管理器控制台通过命令安装它:

PM > Install-Package Microsoft.Extensions.Caching.Memory

或者我们可以使用 NuGet 包管理器来安装这个包:

Microsoft.Extensions.Caching.Memory 示例(含PDF)在C#中:图1 - 在NuGet包管理器中搜索Microsoft.Extensions.Caching.Memory并安装它

在 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...
}

通过这段代码,内存缓存服务对象被添加到应用程序的服务集合并进行配置。 通过AddMemoryCache函数使用其默认配置注册内存缓存系统服务。

注入IMemoryCache

一旦设置完缓存存储,任何需要缓存的类或组件都可以将IMemoryCache接口注入到其中。 例如,在控制器或服务类中:

public class MyService
{
    private readonly IMemoryCache _cache;
    public MyService(IMemoryCache cache)
    {
        _cache = cache;
    }
    // Use _cache to perform caching operations...
}

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...
}

根据应用程序的规格修改设置。

这些说明将帮助您在ASP.NET Core应用程序中配置Microsoft.Extensions.Caching.Memory,通过存储和检索常访问的数据使其更快更高效地运行。

开始

什么是 IronPDF?

使用著名的 .NET 库 IronPDF,程序员可以在 .NET 应用程序中生成、编辑和显示 PDF 文档。 从 HTML 内容、图像或原始数据创建 PDF 是它提供的许多功能之一。 其他功能包括向现有 PDF 文档添加文本、图像和形状,将 HTML 页面转换为 PDF,以及从 PDF 提取文本和图像。

以下是 IronPDF 的一些功能:

  • 从 HTML、PNG 和原始数据创建 PDF。
  • 从 PDF 中提取图像和文本。
  • 添加 PDF 页眉、页脚和水印。
  • 带有密码保护和加密的PDF文档。
  • 填写表单和数字签名功能。

安装 NuGet 包

在您的项目中,确保安装了 IronPDF 包。 可以使用NuGet包管理器控制台来安装它:

PM > 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...
}

通过将IronPDF的HtmlToPdf实例。

在IronPDF中使用Microsoft.Extensions.Caching.Memory

在.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;
        }
    }
}

我们导入了与Microsoft和ASP.NET Microsoft.Extensions.Caching.Memory相关的命名空间。 我们创建了ControllerBase。 该控制器将响应通过HTTP发送的查询。IMemoryCache的实例被注入到控制器的构造函数中。

ASP.NET Core 提供依赖注入以控制服务的生命周期,包括内存缓存。 应用了Generate方法被标记为从指定的路由 (/Demo) 处理HTTP GET请求到商店。 我们尝试使用给定的缓存键从缓存中获取 PDF 数据。 如果在缓存中找不到数据,我们使用GeneratePdf函数创建一个新的PDF。

在多个应用程序服务器的情况下,请确保配置分布式缓存,以便跨所有服务器一致处理缓存。

要使用Microsoft.Extensions.Caching.Memory,请参考文档和示例代码,以便在ASP.NET Core应用程序中缓存数据并提升性能。 实际上,您可以根据应用程序的需要调整过期策略、缓存键和缓存行为。 缓存生成成本高或经常被多线程访问的数据可以改善整体用户体验并大幅减少响应时间。

Microsoft.Extensions.Caching.Memory 示例(含PDF)在C#中:图2 - 来自上述代码的示例输出

结论

总的来说,Microsoft.Extensions.Caching.Memory可以用来增加.NET应用程序的可扩展性和性能,特别是基于ASP.NET Core框架的应用程序。 开发人员可以通过利用内存缓存来改善用户体验、减少延迟和优化数据访问。 无论是缓存参考数据、查询结果还是计算值,该库都提供了一个灵活且易于使用的API,用于开发针对特定应用程序需求的缓存策略。 通过采用缓存最佳实践并将Microsoft.Extensions.Caching.Memory添加到您的.NET应用程序中,您可以实现显著的速度提升和应用程序响应性能的增强。

通过利用Caching.Memory用于高效数据缓存的帮助,.NET开发人员可以大大提升其应用程序的速度。这个强大的组合使开发人员能够通过减少服务器负载、改善用户体验和消除处理开销,轻松设计出高性能、可扩展且响应迅速的应用程序。

IronPDF 可以以合理的价格购买,并且获取该包包括终身许可证。 由于其起价为$999,该包提供了极佳的价值,单一费用适用于多个系统。 对于拥有许可证的用户,它提供全天候的在线工程帮助。 有关收费的详细信息,请访问 IronPDF 许可页面。 访问这个关于 Iron Software 的页面以了解有关 Iron Software 制作的产品的更多信息。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起