9

質問にあるように、サイト全体のすべてのコントローラーとアクションでキャッシュをオフにできるかどうかを知りたいと思いました。ありがとう!

4

4 に答える 4

15

グローバル アクション フィルターを作成し、オーバーライドしますOnResultExecuting()

public class DisableCache : 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();
    }
}

そして、これを global.asax に次のように登録します。

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new DisableCache());
    }

要約すると、これが行うことはグローバル アクション フィルターを作成し、これが暗黙的にすべてのコントローラーとすべてのアクションに適用されるようにすることです。

于 2012-02-23T02:00:57.347 に答える
1

web.config では、追加のヘッダーを追加して、すべての応答を送信できます

<configuration>
    <system.webServer>
        <httpProtocol>
          <customHeaders>
            <add name="Cache-control" value="no-cache"/>
          </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>
于 2015-12-21T10:32:41.700 に答える
1

はい、アプローチ次第です。アクションをベースコントローラーに適用するのが好きです(したがって、そこに返信します)。以下のリンクでフィルターを実装し、グローバル フィルターとしても実装できます (global.asax.cs に登録されています)。

ASP.NET Web サイト全体のブラウザー キャッシュを無効にする

于 2012-02-23T01:59:59.137 に答える