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

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

ブラウザのキャッシュを無効にする方法を探していますASP.NET MVC ウェブサイト全体

次の方法を見つけました:

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();

また、メタ タグ メソッドもあります (一部の MVC アクションは、ヘッドやメタ タグなしで部分的な HTML/JSON を Ajax 経由で送信するため、私の環境では機能しません)。

<meta http-equiv="PRAGMA" content="NO-CACHE">

しかし、私はウェブサイト全体のブラウザ キャッシュを無効にする簡単な方法を探しています。

ベストアンサー1

IActionFilter から継承するクラスを作成します。

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

次に、必要な場所に属性を配置します...

[NoCache]
[HandleError]
public class AccountController : Controller
{
    [NoCache]
    [Authorize]
    public ActionResult ChangePassword()
    {
        return View();
    }
}

おすすめ記事