欢迎来到天天文库
浏览记录
ID:39464753
大小:226.00 KB
页数:13页
时间:2019-07-03
《ASP_net mvc 自定义的OutputCache》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在ASP.NET中构建和使用自定义的OutputCache提供程序BrandonSatrom下载代码示例如果您是一位Web开发人员,您过去可能使用过ASP.NET提供的输出缓存功能。ASP.NET输出缓存功能是随着Microsoft.NETFramework的第一个版本推出的,该功能通过从缓存中检索向站点访问者提供的内容以及避免重新执行页面或控制器,提高了向站点访问者提供内容方面的性能。当返回您不经常更新的数据或者返回一段时间后将过期的数据时,该功能不需要您的应用程序执行耗费大量资源的数据库调用
2、操作。ASP.NET输出缓存使用的是内存存储机制,并且在NETFramework4出现之前,您无法使用您自己的实现覆盖或替代默认缓存。现在,借助新的OutputCacheProvider类型,您可以在ASP.NET中实现您自己的缓存页面输出机制。在本文中,我将为您介绍两种自定义机制。首先,我将使用MongoDB(一种常用的面向文档数据库)在一个简单的ASP.NETMVC应用程序中创建我自己的提供程序,以方便输出缓存。然后,我会使用同一个应用程序快速交换我的自定义提供程序,以便利用WindowsA
3、zureAppFabric的功能—具体地说,就是在云中利用WindowsAzure基础结构提供分布式内存缓存的新DistributedCache提供程序。ASP.NET中的输出缓存在ASP.NETWeb窗体应用程序中,可以通过向任意ASP.NET页面或用户控件添加OutputCachePage指令来配置输出缓存:1. <%@ OutputCache Duration="60" Location="Any" VaryByParam="name" %>2. 对于ASP
4、.NETMVC应用程序,输出缓存是使用ASP.NETMVC附带的操作筛选器来提供的,该操作筛选器可用作任何控制器操作的一个属性:1. [OutputCache(Duration=60, VaryByParam="none")]2. “Duration”和“VaryByParam”在ASP.NETMVC1和2应用程序中是必需的(VaryByParam在ASP.NETMVC3中是可选的),这两种机制都提供其他一些属性和参数,这些属性和参数使开发人员能够控制缓存内容的方
5、式(一些VaryByX参数)、缓存内容的位置(Location)和用于设置缓存无效依赖项的功能(SqlDependency)。对于传统的输出缓存,在您的应用程序中实现该功能时不需要任何其他东西。OutputCache类型是一个在您的应用程序启动时运行,并在遇到页面指令或操作筛选器时开始发挥作用的HttpModule。收到第一个相关的页面或控制器请求后,ASP.NET将接收生成的内容(HTML、CSS、JavaScript文件等)并将各个项目以及过期日期和用于标识相应项目的关键字放入内存缓存中。过
6、期日期由Duration属性确定,关键字则由到页面的路径和必要的VaryBy值的组合确定—例如,如果提供了VaryByParam属性,则会查询字符串或参数值。现在,请考虑一下以这种方式定义的控制器操作:1. [OutputCache(Duration=20, VaryByParam="vendorState")]2.Public ActionResult GetVendorList(string vendorState)3.{4. // Action logic here.5
7、. }6. 在这种情况下,对于vendorState的各个实例(例如,一个针对德克萨斯州,一个针对华盛顿州等等),ASP.NET将在请求该州时分别缓存生成的HTML视图的一个实例。在这种情况下,存储各个实例所使用的关键字将是相关路径和vendorState的组合。另一方面,如果将VaryByParam属性设置为“none”,则ASP.NET将缓存第一次执行GetVendorList的结果,并且会向所有后续请求传递相同的缓存版本,而不考虑vendorState参数的
8、值是否传入了相应操作。当没有提供VaryByParam值时存储此实例所使用的关键字就是路径。图1简单描述了此过程。图1ASP.NET输出缓存过程除了用于控制缓存中的项目的生存期的Duration参数以外,还有一些VaryBy参数(VaryByParam、VaryByHeader、VaryByCustom、VaryByControl和VaryByContentEncoding)用于控制缓存项目的精度,可以配置输出缓存,以控制缓存内容的位置(客户端、服务器或下游代理服务器)。此外,ASP.NET2.
此文档下载收益归作者所有