asp.net – 如何使用SqlDependency使OutputCache依赖于每个请求
我有个问题.无法找到如何使OutputCache SQLDependency依赖于数据库表中的一行.
例如. 我有一个带有一个参数的控制器. ActionResult Index(int? id) 对于具有相同id的每个请求,我需要检查数据库表table1(id int,last_updated datetime).如果具有id = id和last_updated的行未更改. 我使用sql server 2005或更高版本. 我应该使用哪种策略? 我试过用: [OutputCache(Duration = int.MaxValue,VaryByParam = "id",SqlDependency = "DatabaseName:table1")] 但它适用于整个表格的更改. 解决方法
为避免针对每个网页请求(通常是昂贵的操作)访问数据库,可以使用对象缓存(在.NET 4.0中引入).这将导致快速提供网页,因为所有内容都将直接从内存中处理.仅当数据实际更改时,或者由于资源限制或CacheItemPolicy设置而导致缓存从内存中逐出时,才会发生数据库操作.
在这种情况下使用的实用策略如下. 步骤1.在您的Model方法中,正在修改/添加/删除“id”行的数据,完成该数据库操作,然后: >如果您的对象已存在于缓存中,则将其逐出; 第2步.尽可能从缓存中检索对象,仅在必要时从db刷新: >从Controller操作方法中,调用Model方法,该方法返回由“id”参数标识的对象; (MemoryCache类是ObjectCache类的具体实现). 使用这种方法,根本不需要使用Controller方法上的OutputCache,并且数据缓存决策都将完全封装在Model中.我们会更清楚地分离关注点;更高的效率,更好的响应时间和更高的可扩展性;并减少对昂贵的数据库操作的依赖. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何将MVC 3项目更新为jQuery 1.6?
- asp.net-mvc – ASP.NET MVC中UpdateModel的正确行为是什么
- 从ASP.NET Core日志记录中删除日志中的敏感信息
- 设计模式中的那些工厂
- 在ASP.NET MVC C#中使用Jquery更新部分视图
- asp.net-mvc – 用于对Office 365 AD进行身份验证的MVC
- asp.net – 自定义主体在新请求时恢复为GenericPrincipal
- asp.net-mvc – 在Asp.Net MVC应用程序中使用Structuremap将
- asp.net-mvc-5 – nuget中用于与WEB API集成的Ninject包中有
- 从Asp.net中的Pdf读取文本
- asp.net – Web表单(.aspx)命名约定
- 文件上传 – 如何解决邮递员中的文件上传错误?
- asp.net – 导致创建新会话的静态文件
- ASP.NET有一个复选框列表,在4×5网格中有我很好的
- asp.net-mvc – 如何将SQL CE 4 CTP部署到共享主
- asp.net-mvc-3 – 将Mocked HttpPostedFileBase作
- asp.net-mvc – 将带有字符串的json数组发布到As
- asp.net-mvc – 如何跳过ActionFilter的操作执行
- asp.net-mvc – 用于Bookmarked Angular SPA URL
- asp.net-mvc-3 – Ninject和OnePerRequestModule