为了安全和一致性,我不希望我的页面被缓存。当我在浏览器上点击返回按钮时,它应该总是去服务器获取 html。
我通过创建以下动作过滤器来实现它。
public class NoCache : 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);
}
}
我申请将所有内容过滤为全局过滤器
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// Makes sure that cached pages are not served to any browser including chrome
filters.Add(new NoCache());
}
问题解决了。但现在所有图像、css 和 javascript 文件也没有被缓存。 我如何告诉它缓存它们?