【ASP.NET Core Web】レスポンスにキャッシュを使う

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】レスポンスにキャッシュを使う

2024-3-15 |

.NET 8のASP.NET Core Webでレスポンスにキャッシュを使いたい!

概要

今回の記事では、.NET 8のASP.NET Core Webでレスポンスにキャッシュを使う手順を掲載する。

レスポンスにキャッシュを使うことで結果があまり変わらないレスポンスの再計算を防止してサーバー負荷を下げることが出来る。

データが更新されたタイミングや複数キャッシュを使う場合の整合性の問題などもあるんだけども、うまく使えればパフォーマンスを上げることが出来るので使えるところでは積極的に使っていきたい感じ。

仕様書

環境

  • .NET 8.0

手順書

ASP.NET Core Webのアクションで任意のステータスコードとJSONを返す方法はいくつかあるんだけども、この記事では「JsonResult型にステータスコードを追加する方法」と「IActionResult型を使う方法」の2パターンを紹介する。

JsonResult型にステータスコードを追加する方法

Program.csResponseCachingを使うよう設定を追加する。

namespace ResponseCachingSample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            ...

            builder.Services.AddResponseCaching();

            ...

            var app = builder.Build();

            ...

            app.UseResponseCaching();

            ...
        }
    }
}

アクションに属性ResponseCacheを設定してDurationにキャッシュする秒数を入力する。

[ResponseCache(Duration = 60)]
namespace ResponseCachingSample
{
    public class SampleController : Controller
    {
        public IActionResult Get()
        {
            return StatusCode(
                200,
                new { message: "OK" }
        }
    }
}

この例では60秒間、レスポンスがキャッシュされる。

まとめ(感想文)

使いこなすのはなかなか難しそうだと思う今日この頃。