5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[C#] キャッシング戦略とパフォーマンスプロファイリング

Last updated at Posted at 2023-07-04

オリジナルの記事はこちらになります。
https://medium.com/@syantien/caching-strategies-and-performance-profiling-c7e78cd2b014

ASP.NET Coreアプリケーションのパフォーマンスを最適化するための主要なテクニックには、キャッシングとパフォーマンスプロファイリングがあります。このモジュールでは、利用可能なさまざまなキャッシング戦略とパフォーマンスプロファイリングツールを、具体的な例を交えて紹介します。

1. キャッシング戦略:

キャッシングは、高コストまたは複雑な操作の出力を後で使用するために保存するプロセスです。Web開発の文脈では、これはよくデータベースクエリの結果や計算の出力を保存することを意味します。ASP.NET Coreはキャッシングのためのいくつかのオプションを提供します。

1.1. インメモリキャッシング:

インメモリキャッシングは、最もシンプルな形式のキャッシングで、データはローカルのWebサーバーのメモリに保存されます。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMemoryCache();
}

public class MyController : Controller
{
    private readonly IMemoryCache _cache;

    public MyController(IMemoryCache cache)
    {
        _cache = cache;
    }

    public IActionResult Index()
    {
        string cacheEntry;

        // キャッシュキーを探す。
        if (!_cache.TryGetValue("MyKey", out cacheEntry))
        {
            // キーがキャッシュにない場合、データを取得する。
            cacheEntry = DateTime.Now.TimeOfDay.ToString();

            // キャッシュオプションを設定する。
            var cacheEntryOptions = new MemoryCacheEntryOptions()
                .SetAbsoluteExpiration(TimeSpan.FromMinutes(5));

            // データをキャッシュに保存する。
            _cache.Set("MyKey", cacheEntry, cacheEntryOptions);
        }

        return View("Index", cacheEntry);
    }
}

1.2. 分散キャッシング:

分散キャッシングは、複数のサーバー間でキャッシュを共有することで、Webファームのシナリオに理想的です。ASP.NET Coreは、RedisまたはSQL Serverを使用した分散キャッシングの実装を提供します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddStackExchangeRedisCache(options =>
    {
        options.Configuration = "localhost";
        options.InstanceName = "SampleInstance";
    });
}

1.3. レスポンスキャッシング:

レスポンスキャッシングは、HTTPリクエスト全体の出力を保存して、全体のリクエストパイプラインの再実行を回避することを含みます。

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCaching();
}

[ResponseCache(Duration = 60)]
public IActionResult Index()
{
    return View();
}

2. パフォーマンスプロファイリング:

パフォーマンスプロファイリングは、アプリケーションのボトルネックを特定するために不可欠です。プロファイリングには、CPUやメモリの使用、I/O操作など、アプリケーションが実行中に使用するリソースの測定が含まれます。

2.1. プロファイリングのためのミドルウェア:

ASP.NET Coreは、HTTPパイプラインによるリクエストの処理にかかる時間を測定するためのミドルウェアを提供しています。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMiddleware<PerformanceMiddleware>();
    // ...
}

2.2. プロファイリングツール:

.NETアプリケーションのプロファイリングには多くのツールが利用できます。人気のあるものには、Visual Studio Performance Profiler、JetBrains dotTrace、ANTS Performance Profilerなどがあります。

キャッシングとパフォーマンスプロファイリングはパフォーマンス最適化ツールボックスにとって重要なツールです。しかし、アプリケーションをパフォーマンス向上させることと同じくらい重要なのは、それらを安全に保つことです。

次の記事では「セキュリティ対策とベストプラクティスの実装」では、ASP.NET Coreアプリケーションを一般的なセキュリティ脆弱性と攻撃から保護する方法について議論します。認証、認可、データ保護、セキュアなコーディングの実践などのトピックについて深く掘り下げます。

絶賛採用中

C#,Azureの構成にて電子レシートサービスを運営しています。フルリモート環境での仕事になります、是非興味ある方はご相談ください。 こちらを参照ください。 https://receiptroller.com/ja/jobs

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?