属性を使用した ASP.NET MVC アクションでのキャッシュの抑制
チャレンジ:
ASP.NET MVC アプリケーションでは、常に最新の情報を取得できるように、特定のアクションによるデータのキャッシュを防止する必要があることがよくあります。
解決策:
1. jQuery キャッシュの無効化:
jQuery による AJAX 応答のキャッシュを停止するには、AJAX 設定で cache: false
オプションを使用します。
<code class="language-javascript">$.ajax({ cache: false, // ... rest of your AJAX configuration });</code>
2.カスタム NoCache
属性の実装:
より正確に制御するには、MVC アクション内のキャッシュを管理するカスタム属性を作成します。
<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public sealed class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { // Configure HTTP headers to disable caching 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>
3. NoCache
属性の適用:
キャッシュを必要としないコントローラーまたは個々のアクションに属性を適用します。
<code class="language-csharp">[NoCache] public class SomeController : Controller { // Controller actions }</code>
4.グローバル キャッシュ防止:
サイト全体のアプローチの場合、NoCache
属性を基本コントローラー クラスに適用します。
<code class="language-csharp">[NoCache] public class ControllerBase : Controller, IControllerBase { // Controller actions }</code>
5.ブラウザキャッシュの更新:
これらの変更を実装した後は、必ずブラウザでハード更新 (Ctrl F5) を実行して、既存のキャッシュ データをクリアし、更新された結果を確認してください。
以上がASP.NET MVC アクションでのキャッシュを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。