如何禁用 ASP.NET 网站的所有的 浏览器缓存 ?

咨询区

  • Palani

我在寻找一个方法禁用某个 ASP.NET MVC 网站的所有浏览器缓存,我发现了如下方法。


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

而且我也发现了可以在 html 上追加一个 meta 标记。


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

但这种方式不适合我,因为我的网站中会有一些 ajax 请求,自然就无法携带meta了。

请问我如何在全局作用域下实现这么一个禁用浏览器缓存的功能?

回答区

  • JKG

可以自定义一个继承 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] 标记即可,比如下面的 Controller。


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

  • NidhinSPradeep

你可以在  Global.asax 下的 Application_BeginRequest 方法中实现此功能。


    protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        Response.Cache.SetNoStore();
    }

  • JKG

你可以使用 Asp.NET 自带的 OutputCache 特性。


[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

直接使用 OutputCache 特性的话,会让这些代码零散在项目各处,更好的做好应该是封装到一个 Controller 中,然后让需要的 Controller 继承此 Controller 即可,比如下面的代码。


[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class NoCacheController  : Controller
{
}

public class HomeController : NoCacheController
{
}

点评区

全局禁用浏览器的Cache,这需求有点奇葩哈,不过本篇也学习到了如何全局性的配置,有收获。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET模板引擎是一种用于生成动态内容的工具。它允许开发人员在Web应用程序中使用模板文件来定义和组织页面布局和结构。该引擎将模板和数据结合,生成最终的动态HTML内容,并将其发送给客户端浏览器ASP.NET模板引擎的主要功能包括模板定义和数据绑定。模板定义通常使用标记或代码来描述页面的结构和外观。开发人员可以在模板中定义HTML标记,以及使用ASP.NET的特定标记和语法,如服务器控件和数据绑定表达式。 数据绑定是模板引擎的核心功能。它允许开发人员将动态数据与模板文件中的相应区域进行绑定。这使得开发人员能够通过简单的代码和表达式实现动态内容的生成和更新。数据可以来自各种来源,如数据库、Web服务或用户输入。 ASP.NET模板引擎还支持模板继承和重用。开发人员可以定义主模板和子模板,通过继承和重写的方式实现页面布局的模块化和可复用性。这有助于减少代码量,提高开发效率。 除了以上功能,ASP.NET模板引擎还提供了一些辅助功能,如验证、安全性、输出缓存等。这些功能可帮助开发人员提高应用程序的性能和安全性。 总之,ASP.NET模板引擎是一种强大的工具,可用于生成动态的Web内容。它使开发人员能够更轻松地定义和组织页面结构,实现数据和界面的动态绑定,提高开发效率和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值