Asp.net全局输出缓存
最近几天我想到了asp.net中的输出缓存.在我的任务中,我需要为这个非常大的项目实现输出缓存.经过几个小时的搜索,我没有找到任何例子.
最流行的使用输出缓存的方式是声明性的,在这种情况下,您需要在要缓存的页面上编写类似这样的内容. 但是,如果您需要缓存整个站点,则必须在项目的所有页面或母版页上编写此文件.这很疯狂.在这种情况下,您无法将所有配置存储在一个位置.所有页面都有自己的配置.. Global.asax可以帮助我,但我的网站包含大约20个web progects和~20个global.asax文件.而且我不想为每个项目复制相同的代码. 出于这些原因,我决定创建HTTPModule. public void Init(HttpApplication app) { app.PreRequestHandlerExecute += new EventHandler(OnApplicationPreRequestHandlerExecute); app.PostRequestHandlerExecute += new EventHandler(OnPostRequestHandlerExecute); } 在方法“OnPostRequestHandlerExecute”中,我为每个新请求设置输出缓存参数: public void OnPostRequestHandlerExecute(object sender,EventArgs e) { HttpApplication app = (HttpApplication)sender; HttpCachePolicy policy = app.Response.Cache; policy.SetCacheability(HttpCacheability.Server); policy.SetExpires(app.Context.Timestamp.AddSeconds((double)600)); policy.SetMaxAge(new TimeSpan(0,600)); policy.SetValidUntilExpires(true); policy.SetLastModified(app.Context.Timestamp); policy.VaryByParams.IgnoreParams = true; } 在“OnApplicationPreRequestHandlerExecute”方法中,我将calback方法设置为缓存验证: public void OnApplicationPreRequestHandlerExecute(object sender,EventArgs e) { HttpApplication app = (HttpApplication)sender; app.Context.Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(Validate),app); } 最后一部分 – 回调验证方法: public void Validate(HttpContext context,Object data,ref HttpValidationStatus status) { if (context.Request.QueryString["id"] == "5") { status = HttpValidationStatus.IgnoreThisRequest; context.Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(Validate),"somecustomdata"); } else { status = HttpValidationStatus.Valid; } } 要附加我的HttpModule,我使用编程方式附加方法: [assembly: PreApplicationStartMethod(typeof(OutputCacheModule),"RegisterModule")] 这种方法很有效,但我想知道还有其他方法可以做到这一点. 解决方法
尝试查看IIS缓存是否提供了所需的内容.
http://www.iis.net/configreference/system.webserver/caching (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用html.actionlink将模型从视图传递到控制
- asp.net-mvc – Post Post和Comment应该在Post Aggregate中
- asp.net-mvc-3 – 将数据库添加到App_Data文件夹
- .NET Core技术研究系列-索引篇 .NET Core技术研
- asp.net – MVC 4导出到CSV – 另存为对话框在Chrome和Fire
- asp.net-mvc – MVC – 一次创建对象和相关对象
- asp.net-mvc – WebApi是否支持开箱即用的application / x-
- asp.net-mvc – 如何创建ASP.NET MVC控制器从查询字符串接受
- asp.net-mvc – MVC中的绑定集合
- asp.net – 我应该继续研究MVC 1.0上的项目还是停止学习MVC
- ASP.NET重写自定义错误不发送内容类型头
- asp.net – jqgrid第1页的x pager
- asp.net-mvc-3 – 使用带有布尔值的Html.RadioBu
- razor – 如何将值绑定到ASP.NET Core MVC中枚举
- asp.net-web-api – Web API中的Actions和QueryS
- .net-core – 用于.NET Core控制台应用程序的ASP
- asp.net-mvc – ASP.NET MVC – ModelState.IsVa
- asp.net-core-mvc – 在ASP Net Core 2.0 MVC中检
- 用于高级搜索/过滤的.Net WebAPI URI约定
- 在ASP.NET中访问Active Directory?