برای غیرفعال کردن کش یک صفحه در ASP.NET MVC و از کار انداختن دکمه back میتوان از فیلترها جهت کپسوله کردن یک سری کدهای تکراری که باید در حین اجرای یک اکشن متد فراخوانی شوند استفاده کرد:
در اینجا یک فیلتر سفارشی را جهت تنظیم کش صفحه به حالتی که توسط مرورگر ذخیره نشود، طراحی کردهایم.
از این پس، استفاده از آن در مواقع نیاز و تنها در صفحات و Viewهایی که باید اینگونه رفتار کنند، به نحو زیر خواهد بود:
public class NoBrowserCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.DisableBrowserCache(); base.OnResultExecuting(filterContext); } } public static class CacheManager { public static void DisableBrowserCache(this HttpContextBase httpContext) { httpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); httpContext.Response.Cache.SetValidUntilExpires(false); httpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); httpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); httpContext.Response.Cache.SetNoStore(); } }
از این پس، استفاده از آن در مواقع نیاز و تنها در صفحات و Viewهایی که باید اینگونه رفتار کنند، به نحو زیر خواهد بود:
[HttpGet] [NoBrowserCache] public virtual ActionResult Index(string name)