ホームページ > バックエンド開発 > C++ > 特定の ASP.NET MVC アクションのキャッシュを防ぐにはどうすればよいですか?

特定の ASP.NET MVC アクションのキャッシュを防ぐにはどうすればよいですか?

DDD
リリース: 2025-01-14 15:07:13
オリジナル
858 人が閲覧しました

How Do I Prevent Caching for Specific ASP.NET MVC Actions?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート