ASP.NET 4 AppFabric 输出缓存提供程序

缓存是用来保存你数据的地方,从而使你的应用程序访问更快速。缓存可以根据你的需要分配到许多台机器上,而开发人员无需关心数据究竟在哪台机器上。为了获得超快的性能,你甚至可以牺牲数据一致性,将缓存复制到调用客户端(本地缓存)。所保存的数据可以是任何可被序列化的.NET对象。

使用缓存的目的是让你的应用程序的性能和扩展性更好。AppFabric支持显式和隐式两种缓存使用方式来提升扩展性和性能。如果你是一名ASP.NET的开发人员,隐式和显式缓存使用方式对你来说应该相当熟悉。显式缓存使用方式让你能通过AppFabric提供的缓存API,用编程的方式添加、删除并管理缓存中的数据项。这是一个非常强大的工具来帮助你定制应用程序数据的缓存策略及使用模式,不过你需要对数据缓存的原则有一定的理解。隐式缓存使用方式利用了默认的缓存策略,能在常用的场景中发挥作用。隐式缓存使用的两个例子包括ASP.NET会话状态和HTML页面缓存(即输出缓存)。

借助 ASP.NET 提供程序模型,开发人员可以从三种会话提供程序中进行选择:InProc、StateServer 和 SQLServer。使用 AppFabric 缓存时,第四个会话提供程序在技术上是可行的,但是应当小心不要将会话与缓存混淆。缓存用于提高性能,会话用于使应用程序达到一定的状态。

用于 ASP.NET 的 AppFabric 缓存会话提供程序使用其分布式缓存(可能具有高可用性)作为 ASP.NET 会话的存储库。这一功能是透明的,且无需修改现有的代码就可以使用。有了这样的提供程序,ASP.NET 会话就可以在 Web 服务器崩溃或脱机的情况下保持可用,这是因为会话是存储在 AppFabric 缓存中的。

ASP.NET 4.0中对它进行了重新设计,提供了一个OutputCacheProvider供开发人员进行扩展,但是它默认情况下,仍然使用System.Web.Caching.Cache来做做缓存。关于ASP.NET 4.0的Output Cache的使用,请参考ScottGU的VS 2010 和 .NET 4.0 系列之《ASP.NET 4中的可扩展输出缓存》篇。

ASP.NET开发团队在codeplex上发布了ASP.NET 4 Providers for AppFabric Caching,里面有两个提供者ASP.NET会话状态和HTML页面缓存(即输出缓存):

Session state: Microsoft.Web.DistributedCacheSessionStateStore
Output caching: Microsoft.Web.DistributedOutputCache
目前这两个提供者没有正式发布,只是发布在社区中进行测试和反馈,不能直接在生产环境中使用。不过AppFabric 已经带了一个ASP.NET Session State Provider (Windows Server AppFabric Caching),具体参考http://msdn.microsoft.com/en-us/library/ee790859.aspx。

使用方法如下:

1、在Asp.Net 4.0 的web.config文件中添加了关于缓存的配置节,如下所示

<caching>

     <outputCache defaultProvider="AppFabricOutputCache">

        <providers>

         <add name="AppFabricOutputCache" type="Microsoft.Web.DistributedOutputCache, Microsoft.Web.DistributedCache" hostName="localhost" cachePort="22233" cacheName="session"/>

       </providers>

     </outputCache>

   </caching>

2、使用Microsoft.Web.DistributedOutputCache

1)在配置文件中做配置,将自定义的实现作为默认输出缓存支持,请看1的配置
2)在UserControl中指定使用Provider的名字,改名字在web.config中定义,例如

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="IamUserControl.ascx.cs" Inherits="OutputCacheTest.IamUserControl" %>

<%@ OutputCache Duration="3000" ProviderName="AspNetInternalProvider" VaryByParam="None" %>

需要注意的是,只能在UserControl中指定Provider的名字,在Page的声明中是不允许的,在Page中默认情况会使用web.config中配置的defaultProvider,但是我们可以通过3)中介绍的方法给不同的页面使用不同的OutputCacheProvider实现。

同样地,如果我将[OutputCache]特性加到某个ASP.NET MVC控制器的任意一个action方法上时,内容也会通过使用我的ScottOutputCache提供器被缓存和保存起来:

3)你可以通过覆盖应用的Global.asax文件中的 GetOutputCacheProviderName() 方法,在每个请求的基础上,动态指定使用哪个输出缓存提供器。在下面,我表明,对我应用中的 “Home.aspx”网页我想要使用内置的,用内存的ASP.NET输出缓存提供器,然后对所有其他的请求,我想要使用注册在web.config文件中的提供器:在Global.asax文件中重写GetOutputCacheProviderName(HttpContext context)方法,根据context返回不同的实现名字,如下例子

Asp.Net 4.0 新特性之 使用自定义OutputCache Provider

VS2010] ASP.NET 4.0 新功能:自訂輸出快取 (Output Cache) 提供者

在 ASP.NET 中构建和使用自定义的 OutputCache 提供程序

本文来自合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

时间: 2024-09-20 00:53:23

ASP.NET 4 AppFabric 输出缓存提供程序的相关文章

自定义Appfabric Cache 配置提供程序

默认情况下,AppFabric缓存提供了两种配置存储:一个SQL Server存储和XML文件存储.该解决方案提供和供AppFabric缓存自定义配置提供程序,使用Amazon S3存储缓存的配置. 您可以创建您通过实现IDataStoreProxy接口和注入新的实施将自己的数据存储TransactionContext 看看现有AmazonProxy指导. 该解决方案包含4个项目 一个WinForms可执行项目,创建自定义配置AppFabric向导的UI一个库,它包含了ICustomProvid

javascript客户端解决方案 缓存提供程序_javascript技巧

相信每一个开发者都知道缓存的重要性.从头至尾有缓存的后台(memcached,xcache等.) 来减轻db的压力.对内容分发网络(CDN)缓存中希望你的浏览器缓存那些不止一次的加载资源.当然, 有客户端缓存,所以你不要重复昂贵的操作(即使是算法或大量的运算). 这是介绍的是一个不错的javascript的方面的客户端解决方案,可选配支持HTML5本地存储器. Starting Simple 复制代码 代码如下: function CacheProvider() { // values will

ASP.NET输出缓存

ASP.NET缓存通过在内存中存储页面输出来构建一个高性能的,可伸缩的asp.net web应用程序.在随 后的请求中,网页代码不用执行,直接使缓存的输出用于服务的请求.在本文中,我们专注于ASP.NET页 面输出缓存. 这只是在一站式开发技术框架中Silverlight样例的一部分,你能从http://cfx.codeplex.com/上获得 更多的例子. Microsoft All-In-One Code Framework ,微软通过典型的三种流行的编程语言(Visual C#, VB.N

ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等)_实用技巧

输出缓存的前世今生 ASP.NET 1.0引入输出缓存的概念,这使得开发者可以缓存页面.控件.控制器以及HTTP响应的输出到内存中.在后续的Web请求,ASP.NET就可以使用缓存中的内容更快响应. ASP.NET的输出缓存系统足够灵活,使得我们可以根据不同的查询字符串或者表单post参数来缓存不同版本的内容.例如test.aspx?category=Vegerable 和 test.aspx?category.aspx?category=Meat.它也允许我们根据浏览器类型或者用户语言偏好来缓

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

.NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个"中心数据库"中.对于分布式缓存,.NET Core提供了针对Redis和SQL Server的原生支持.除了这个独立的缓存系统之外,ASP.NET Core还借助一个中间件实现了"响应缓存",它会按照HTTP缓存规范对整个响应实施缓存.不过按照惯例,在对缓存进行系统介绍之前,我们还是先通过一些简单的实例演示感知一下如果在一个AS

ASP.NET 输出缓存移除的实例代码

  ASP.NET输出缓存的使用网上已经有很多例子了,这里主要介绍下如何在后台管理中移除缓存. 1.基于页面缓存 对于页面:Default.aspx 如果页面顶部添加: <%@ OutputCache Duration="60" VaryByParam="none" %> 在后台管理中要移除很简单: System.Web.HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("Default.as

ASP.NET 2.0中的页面输出缓存

asp.net|缓存|页面 静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面.对于那些数据经常更新的页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出.开发人员必须通过设置,使得某些页面的响应成为缓存的一部分. 设置页面输出

ASP.NET 2.0中的页面输出缓存_实用技巧

静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面.对于那些数据经常更新的页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出.开发人员必须通过设置,使得某些页面的响应成为缓存的一部分. 设置页面输出缓存可以使用以下两种方式:一

ASP.NET缓存全解析2:页面输出缓存

ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓存 ASP.NET 缓存全解析5:文件缓存依赖 ASP.NET 缓存全解析6:数据库缓存依赖 ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman 页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中.当用户请求该页面时,系统