40

ASP.Net MVC 3を使用して、属性を使用して出力がキャッシュされているコントローラーを持っています[OutputCache]

[OutputCache]
public controllerA(){}

別のコントローラーを呼び出して、特定のコントローラーのキャッシュ データ (SERVER CACHE) または一般的にすべてのキャッシュ データを無効にすることが可能かどうかを知りたいです。

public controllerB(){} // Calling this invalidates the cache
4

2 に答える 2

1

次のように、カスタム属性を使用してそれを行うことができます。

[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);
    }
}

次に、あなたcontrollerbができること:

[NoCache]
public class controllerB
{
}
于 2013-04-24T14:10:11.343 に答える