如何禁用 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,这需求有点奇葩哈,不过本篇也学习到了如何全局性的配置,有收获。
如何禁用 ASP.NET 网站的所有的 浏览器缓存 ?相关推荐
- 不修改代码就能优化ASP.NET网站性能的一些方法
目录 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不需要修改程 ...
- 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项
将Asp.Net网站发布到IIS的四种方法及注意事项: 不管是那种发布方法, 第一件事情是让IIS能够支持asp.net程序, 默认IIS是不开器asp.net网站程序的支持的.在IIS中的" ...
- ASP.NET网站页面加载及运行效率等多方面实战优化
网站加载内容较多,图片.Flash等文件较大.请求次数较多.页面不具有缓存性等等都会影响网站的页面加载速度和运行效率.之前做过很多网站,但是基本上都没有进行过优化,比如运用缓存等技术.最近有一个网站加 ...
- 预编译 ASP.NET 网站以进行部署
预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microso ...
- ASP.NET 网站预编译概述
默认情况下,在用户首次请求资源(如网站的一个页)时,将动态编译 ASP.NET 网页和代码文件.第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率. ASP.N ...
- Asp.net网站的自动部署-sqlserver数据库的自动部署
Asp.net网站的自动部署 2005-09-28 这段时间要解决的问题是asp.net网站的自动部署,主要功能是在安装的时候实现数据库的部署和基本数据的添加,asp.net网站的部署(多个虚拟目录) ...
- 解决ASP.NET网站发布问题
解决ASP.NET网站发布问题 参考文章: (1)解决ASP.NET网站发布问题 (2)https://www.cnblogs.com/limusic/p/3378023.html 备忘一下.
- 由“ASP.NET网站限制访问频率”想到的两点问题(转)
转自:http://www.cnblogs.com/wangwei/archive/2009/09/19/1570242.html "ASP.NET网站限制访问频率"的作者遇到了两 ...
- 实现 ASP.NET 网站地图提供者
ASP.NET 网站导航提供若干 Web 服务器控件用于 Web 页面中导航结构的显示:SiteMapPath,TreeView,和 Menu 控件.这些 Web 服务器控件都使用 ASP.NET 默 ...
最新文章
- 安卓学习-其他-文件读写
- COM 组件设计与应用(六)——用 ATL 写第一个组件(vc.net)
- NLP学习思维导图,非常的全面和清晰
- IDEA加密文件Base64转换String传输以及报文摘要MD5防止恶意篡改
- 清华朱军团队包揽三项冠军 | NIPS 2017对抗样本攻防竞赛总结(附学习资料)
- jvm性能调优 - 11J线上VM调优案例分享
- 【单片机相关】的网站
- 一文弄懂AdaBoost、提升树、残差树、GDBT
- linux 程序返回值 139,Linux系统监控之ssh登陆自动139邮件短信提醒
- Comet OJ-栈的数据结构题【线段树】
- 怎么用计算机拟合数据,数据拟合的几个应用实例-毕业论文.doc
- 机器学习问题总结(03)
- 数据中心的容器操作系统--k8s理解
- Atitit 研发体系 codelib 代码库的建设 目录 1. 概念与组成	2 1.1. Java代码	2 1.2. Js代码	2 1.3. H5 代码 js+css+htm+txt	2 1.4.
- markdown 文档转 word
- LCD1602中文资料
- 汤姆·克鲁斯 - 电影全集
- 英文字母pc是什么意思,互联网的pc指的是什么
- 论文-Interactive Path Reasoning on Graph for Conversational Recommendation
- pwnable.kr-passcode