Microsoft.Extensions.Caching.Memoryの例(PDF付き)in C#
アプリケーションを迅速かつ効果的に構築するには、.NETアプリケーションに最適化手法が必要になることがよくあります。 キャッシングは、要求される頻度が高い素材を一時的に分散キャッシュに保存し、より迅速な取得を可能にする強力なアプローチです。 この戦略により処理時間とサーバー負荷の軽減が達成され、アプリケーションパフォーマンスが大幅に向上することがあります。 さらに、パフォーマンスカウンターを実装してキャッシングシステムを監視し、改善することができます。
キャッシングは、このコンテキストで強力な最適化戦略です。 Microsoft.Extensions.Caching.Memory は、 .NETアプリケーションに効率的なメモリ内オブジェクト キャッシュ ソリューションを提供します。 IronPDFとともに MemoryCache キャッシュを戦略的に使用すると、PDF 中心のアプリの動作と応答が大幅に高速化されます。
Microsoft.Extensions.Caching.Memory C# の例をIronPDFと効率的に統合する方法を探ります。 この記事では、IronPDF HTMLからPDFへの変換プロセスに関連するキャッシングの利点を議論し、有用な実装のヒントを紹介し、IronPDFプログラムでキャッシングを構成するための詳細な説明を提供します。 最終的には、効果的で直感的なPDFアプリケーションを開発するために必要なスキルとリソースを手に入れることができます。
Microsoft.Extensions.Caching.Memory: .NETにおけるキャッシュの基礎
キャッシングは、多くの高性能.NETアプリケーションで使用される手法で、頻繁にアクセスされるデータをメモリに保存して迅速に取得できるようにします。 Microsoft.Extensions は、アクセス可能な多くのキャッシュ オプションの 1 つです。 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パッケージマネージャーを使用してパッケージをインストールすることもできます:

スタートアップ.csでサービスを構成する
ASP.NET Coreアプリの Startup.cs ファイルを開き、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
このコードにより、アプリケーションのサービスコレクションにメモリキャッシュサービスオブジェクトが追加され、構成されます。 メモリ キャッシュ システム サービスは、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 とは何ですか?
IronPDFという有名な.NETライブラリの助けを借りて、プログラマーは.NETアプリケーション内でPDFドキュメントを生成、編集、表示できます。 HTMLコンテンツ、画像、または生データからPDFを作成することは、PDFを扱うために提供される多くの機能の1つです。 他の機能には、既存のPDFドキュメントへのテキスト、画像、形状の追加、HTMLページのPDFへの変換、およびPDFからのテキストおよび画像の抽出が含まれています。
以下にIronPDFの機能をいくつか示します:
- HTML、PNG、および未処理のデータからのPDF作成。
- PDFからの画像およびテキストの抽出。
- PDFのヘッダー、フッター、透かしの追加。
- パスワード保護および暗号化を使用したPDFドキュメント。
- フォームの記入およびデジタル署名機能。
NuGetパッケージのインストール
プロジェクトにIronPDFパッケージがインストールされていることを確認します。 NuGetパッケージマネージャーコンソールを使用してインストールできます:
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
このコードでは、IronPDF の HtmlToPdf サービスをシングルトンとして構成することにより、アプリケーションが HtmlToPdf のインスタンスを 1 つだけ作成して使用することを保証します。
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 で動作するために必要な名前空間をインポートします。 ControllerBase から派生した DemoController コントローラーを作成します。 このコントローラは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を提供します。 キャッシュのベスト プラクティスを採用し、 .NETアプリに Microsoft.Extensions.Caching.Memory を追加することで、速度の顕著な向上とアプリケーションの応答性の向上を実現できます。
.NET開発者は、Microsoft.Extensionsの機能を活用し、 IronPDFによる動的なPDF作成とCaching.Memoryによる効果的なデータキャッシュを活用することで、アプリの速度を大幅に向上させることができます。この強力な組み合わせにより、開発者はサーバー負荷の軽減、ユーザーエクスペリエンスの向上、処理オーバーヘッドの排除を実現し、高性能でスケーラブル、かつ応答性に優れたアプリケーションを容易に設計できます。
IronPDFはリーズナブルな価格で購入でき、パッケージを取得するとライセンスが一生有効になります。 このパッケージは、複数のシステムに対して単一の料金である $999 から始まるため、非常に価値があります。 ライセンスを持つユーザーには、24時間体制でオンラインエンジニアリング支援が提供されます。 料金の詳細については、IronPDFライセンスページをご覧ください。 Iron Softwareに関するページを訪れて、Iron Softwareが製造する製品について詳しく学んでください。
よくある質問
Microsoft.Extensions.Caching.Memory for .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生成と統合することの利点は何ですか?
IronPDFを使用した.NETアプリケーションでのPDF生成にキャッシングを統合すると、速度が大幅に向上し、待ち時間が短縮されます。これにより、頻繁に使用されるデータへのアクセスが速くなり、ユーザーエクスペリエンスが向上し、アプリケーションがよりスケーラブルになります。
どのようにして.NETアプリケーションのキャッシングシステムを監視し、強化することができますか?
パフォーマンスカウンターを実装することで、.NETアプリケーション内のキャッシングシステムの効率を監視できます。この監視により、調整や強化が可能になり、特にPDFタスクにIronPDFを使用する際に最適なパフォーマンスが確保されます。




