asp.net – 编程控制输出缓存 – 根据参数值禁用或启用缓存
发布时间:2020-12-15 18:33:04 所属栏目:asp.Net 来源:网络整理
导读:我们有一个相当标准的电子商务场景,分类中的产品分页列表。不管好坏还是差不多,80%的访客从未浏览过第一页,根据类别,可能会再有5-10页的结果比较少见。 (是的,我们会优化第一页显示的内容并进行良好的搜索 – 但这是一个不同的讨论) 我们无法缓存每一
我们有一个相当标准的电子商务场景,分类中的产品分页列表。不管好坏还是差不多,80%的访客从未浏览过第一页,根据类别,可能会再有5-10页的结果比较少见。 (是的,我们会优化第一页显示的内容并进行良好的搜索 – 但这是一个不同的讨论)
我们无法缓存每一页结果,因为我们受到内存的限制,但缓存的好处只是每个类别的第一页结果将是巨大的。 我知道我可以使用对象缓存来做类似的事情来存储有问题的数据集,但是这可能是使用输出缓存,也许通过使用response.Cache对象? 在页面生命周期中哪里可以做到这一点?预渲染? 很简单,URL就像“/ ProductList?Category = something& Page = 1”,我想要的逻辑类似(伪代码): If paramater "Page" equals 1 Use output caching: vary by param = "categoryName; page" else Don't use caching at all,just render the page from scratch. 我们在IIS 6 / win2003上使用ASP.NET 2.0。 解决方法
而不是使用OutputCache指令,您可以通过编程方式执行相同的操作,如下所示:
if (yourArbitraryCondition) { OutputCacheParameters outputCacheSettings = new OutputCacheParameters(); outputCacheSettings.Duration = 60; InitOutputCache(outputCacheSettings); } 从OnInit这样做可以正常工作。显然,您可以通过设置OutputCacheParameter上的各种属性来调整缓存行为,该属性与指令具有相同的旋钮(实际上,这是我们在使用指令时生成的)。 关键是你只是有条件地执行这个逻辑,而指令使它无条件。 更新: 作为替代方案,您可以使用上面代码构建的低级缓存API。例如 HttpCachePolicy cache = Response.Cache; cache.SetCacheability(HttpCacheability.Public); cache.SetExpires(Context.Timestamp.AddSeconds(60)); cache.VaryByParams["categoryName"] = true; 基本上,这是做同样事情的另一种方式,而不使用任何被标记为“不应该被调用”的API。最后,任何一种方式都可以工作,所以请选择。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何缓存FileContentResult的性能?
- Asp.net MVC scheduler的实现方法详解
- 如何使用asp.net Web应用程序获取cookie?
- asp.net – 什么放在会话变量中
- asp.net-mvc – 在OWIN登录上检索用户的Facebook电子邮件
- ASP.NET UserControl类库
- asp.net – 当使用Method时,从远程客户端访问ashx会收到403
- asp.net-mvc – 实体框架4不保存我的多对多行
- asp.net-mvc – ASP.NET MVC 4 – 用户组的唯一路由?
- asp.net-mvc – ASP MVC Razor视图扩展方法,如何创建“全局
推荐文章
站长推荐
- asp.net – 是否可以完全在代码中配置ELMAH?
- asp.net-mvc-3 – ASP.NET MVC 3 WebGrid – 条件
- 如何在Asp.Net MVC 2中通过JQuery调用重载的C#函
- asp.net-mvc – 过滤Kendo UI MVC Grid时的自定义
- asp.net-mvc – 为什么我不能在ASP.NET MVC 3中使
- asp.net – 客户端缓存vs Cookie
- asp.net-mvc – 在ASP.NET MVC 4中未加载的捆绑包
- asp.net – 如何使用app_GlobalResource或app_Lo
- asp.net – NuGet:’X’已经有一个依赖定义为’
- 开源小工具 酷狗、网易音乐缓存文件转mp3工具
热点阅读