Microsoft.Extensions.Caching.Memory 예제 (PDF와 함께) C#
애플리케이션을 반응적이고 효과적으로 구축하기 위해 .NET 애플리케이션에는 종종 최적화 방법이 필요합니다. 캐싱은 분산 캐시에 자주 요청되는 자료를 일시적으로 저장하여 더 빠른 검색을 가능하게 하는 강력한 접근 방식입니다. 이 전략을 통해 처리 시간과 서버 부하가 줄어듦으로써 애플리케이션 성능이 크게 향상될 수 있습니다. 또한, 성능 카운터를 구현하여 캐싱 시스템을 모니터링하고 향상할 수 있습니다.
캐싱은 이 문맥에서 강력한 최적화 전략입니다. Microsoft.Extensions.Caching.Memory는 .NET 애플리케이션을 위한 효율적인 인메모리 객체 캐싱 솔루션을 제공합니다. IronPDF와 함께 MemoryCache 캐시를 전략적으로 사용하면 PDF 중심의 애플리케이션이 훨씬 빠르게 작동하고 반응할 것입니다.
우리는 C# 예제를 Microsoft.Extensions.Caching.Memory와 IronPDF에 효율적으로 통합하는 방법을 탐구합니다. 이 기사에서는 IronPDF HTML to 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 Install-Package
먼저, 프로젝트에 Microsoft.Extensions.Caching.Memory가 설치되어 있는지 확인하세요. NuGet 패키지 관리자 콘솔에서 다음 명령을 사용하여 설치할 수 있습니다:
Install-Package Microsoft.Extensions.Caching.Memory
또는 NuGet 패키지 관리자를 사용하여 패키지를 설치할 수 있습니다:

Startup.cs에서 서비스 구성
ASP.NET Core 앱에서 ConfigureServices 메소드를 열어 Startup.cs 파일을 엽니다. 메모리 캐시 서비스를 설정하려면 다음 코드를 추가하십시오:
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
메모리 캐시 서비스 객체는 애플리케이션의 서비스 컬렉션에 추가되고 이 코드에 의해 구성됩니다. 메모리 캐시 시스템 서비스는 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
메모리에서 데이터를 캐싱하고 검색하는 방법은 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
애플리케이션의 사양에 따라 설정을 변경하십시오.
이 지침은 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 Install-Package
프로젝트에 IronPDF 패키지가 설치되어 있는지 확인하십시오. NuGet 패키지 관리 콘솔을 사용하여 설치할 수 있습니다:
Install-Package IronPdf
ASP.NET Core 애플리케이션의 Startup.cs 파일을 열어 ConfigureServices 함수를 액세스하세요. 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
IronPDF의 HtmlToPdf 서비스를 싱글톤으로 구성함으로써 이 코드는 애플리케이션이 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;
}
}
}
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
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는 특히 ASP.NET Core 프레임워크를 기반으로 하는 .NET 애플리케이션의 확장성과 성능을 향상시키는 데 사용될 수 있습니다. 개발자는 인메모리 캐싱을 활용하여 사용자 경험을 개선하고, 지연을 최소화하며, 데이터 액세스를 최적화할 수 있습니다. 이 라이브러리는 참조 데이터, 쿼리 결과 또는 계산된 값을 캐싱하기 위한 특정 애플리케이션 요구 사항에 맞추는 캐싱 전략을 개발하기 위한 유연하고 사용하기 쉬운 API를 제공합니다. 캐싱 모범 사례를 채택하고 Microsoft.Extensions.Caching.Memory를 .NET 애플리케이션에 추가함으로써 눈에 띄게 빠른 속도 증가와 향상된 애플리케이션 반응성을 얻을 수 있습니다.
IronPDF를 사용한 동적 PDF 생성과 Caching.Memory의 효과적인 데이터 캐싱 도움을 통해, .NET 개발자는 애플리케이션의 속도를 크게 향상시킬 수 있습니다. 서버 부하를 줄이고 사용자 경험을 개선하며 처리 오버헤드를 제거하여, 성능이 뛰어나고 확장 가능하며 반응성이 뛰어난 애플리케이션을 쉽게 설계할 수 있도록 합니다.
IronPDF는 합리적인 가격에 구매할 수 있으며, 패키지 구입 시 평생 라이선스가 포함됩니다. 이 패키지는 여러 시스템을 위한 단일 요금으로 시작하기 때문에 뛰어난 가치를 제공합니다. $799 라이선스를 보유한 사용자에게는 연중무휴 온라인 엔지니어링 지원이 제공됩니다. 비용에 대한 자세한 내용은 IronPDF Licensing Page를 방문하시기 바랍니다. Iron Software에 대한 정보 페이지를 방문하여 Iron Software가 만든 제품에 대해 자세히 알아보세요.
자주 묻는 질문
Microsoft.Extensions.Caching.Memory를 .NET 애플리케이션에서 사용하는 목적은 무엇입니까?
Microsoft.Extensions.Caching.Memory는 메모리 내 객체 캐시를 제공하여 .NET 애플리케이션의 성능을 향상시키는 데 사용됩니다. 메모리에 자주 액세스되는 데이터를 저장하여 빠른 검색을 가능하게 하여, 특히 PDF 작업을 위한 IronPDF와 함께 사용될 때 매우 유용할 수 있습니다.
.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를 사용하여 만료 정책, 크기 제한, 퇴출 전략 설정이 포함됩니다. 이러한 구성은 특히 PDF 처리를 위한 IronPDF와 함께 사용할 때 캐싱 프로세스를 최적화합니다.
.NET 애플리케이션에서 동적 PDF를 어떻게 생성할 수 있습니까?
개발자는 IronPDF를 사용하여 .NET 애플리케이션에서 동적 PDF를 생성할 수 있습니다. HTML을 PDF로 변환하고, 헤더와 푸터를 추가하는 등 PDF 생성 및 조작을 위한 다목적 도구로 지원합니다.
.NET에서 PDF 생성에 캐싱을 통합하는 이점은 무엇입니까?
.NET 애플리케이션에서 IronPDF를 사용하여 PDF 생성에 캐싱을 통합하면 속도를 크게 향상하고 지연을 줄일 수 있습니다. 이는 사용자 경험을 향상시키고, 자주 사용되는 데이터에 대한 더 빠른 액세스를 통해 애플리케이션을 보다 확장 가능하게 만듭니다.
.NET 애플리케이션에서 캐싱 시스템을 어떻게 모니터링하고 향상할 수 있습니까?
성능 카운터를 구현하여 .NET 애플리케이션의 캐싱 시스템 효율성을 모니터링할 수 있습니다. 이러한 모니터링은 최적 성능을 보장하기 위한 조정 및 향상을 가능하게 하며, 특히 PDF 작업을 위한 IronPDF 작업 시 유용합니다.




