ASP.NET MVC アクションでのキャッシュの制御
ASP.NET MVC のキャッシュ メカニズムにより、パフォーマンスが大幅に向上します。 ただし、新しいデータの取得を保証するには、特定のアクションのキャッシュを無効にすることが不可欠であるシナリオが存在します。このガイドでは、カスタム属性を使用して特定の ASP.NET MVC アクションでのキャッシュを防止する方法について詳しく説明します。
NoCache 属性の作成
キャッシュを無効にするカスタム属性を構築するには、[AttributeUsage]
属性と [ActionFilterAttribute]
属性を利用します。 以下は例です:
<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public sealed class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); filterContext.HttpContext.Response.Cache.SetNoStore(); base.OnResultExecuting(filterContext); } }</code>
[NoCache]
をコントローラーまたはアクション メソッドに適用すると、その特定の要素のキャッシュが無効になります。 あるいは、ベース コントローラーから継承し、それを [NoCache]
で装飾すると、継承するすべてのコントローラー全体でのキャッシュが防止されます。
jQuery のキャッシュ コントロール
データの取得に jQuery を使用する場合、cache: false
メソッド内で $.ajax()
を明示的に設定すると、キャッシュが防止されます。
<code class="language-javascript">$.ajax({ cache: false, // ... other AJAX settings });</code>
ブラウザの更新を強制しています
キャッシュ対策対策を実施した後は、ブラウザがキャッシュ データに依存しないようにするために「ハード リフレッシュ」(Ctrl F5) が重要です。ブラウザーがキャッシュされたバージョンを保持している場合、標準の更新 (F5) では常に最新の情報が取得できるとは限りません。
概要
jQuery で NoCacheAttribute
を使用するか、cache: false
を設定すると、対象となる ASP.NET MVC アクションのキャッシュが効果的に防止され、ブラウザーが現在のデータを確実に受信できるようになります。 キャッシュ制御をマスターすることは、ユーザー エクスペリエンスやアプリケーション ロジックに影響を与える古いデータを回避する鍵となります。
以上が特定の ASP.NET MVC アクションのキャッシュを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。