ASP.NET-缓存技术

来源:互联网 发布:linux yum 编辑:程序博客网 时间:2024/05/21 14:26

1. ASP.NET 缓存简介

       缓存可以生成高性能的Web应用程序。将那些频繁访问而且不需要更新的数据存在内存中,当用户再一次访问这些数据时,可以避免重复取满足之前请求的信息,快速显示请求的Web页面。
       ASP.NET 3种缓存技术:页面输出缓存、页面部分缓存和页面数据缓存。

2. 页面输出缓存

(1)页面输出缓存概述

       页面缓存机制是最为简单的缓存机制,该机制将整个ASP.NET 页面内容保存在服务器内存中。当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期。在整个过程中,缓存内容直接发送给用户。而不必再次经过页面处理生命周期。通常情况下,页面输出缓存对于那些包含不需要经常修改内容,但需要大量处理才能编译完成的页面特别有用。另外,页面输出缓存是将页面全部内容保存在内存中,并用于完成客户端请求。
语法:
<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None | ServerAndClient" Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>
Duration:页或用户控件进行缓存的时间(以秒为单位),该属性是必需的。
Location:指定输出缓存可以使用的场所,默认值为 Any。在用户控件中的@OutPutCache指定不支持此属性
Shared:确定用户控件输出是否可以由多个页共享,默认值为false
VaryByControl:该属性使用一个分号分割的字符串列表来改变用户控件的部分输出缓存,这些字符串代表用户控件中申明的                                        ASP.NET服务控件的ID属性值。值得注意的是,除非已经包含了VaryParam属性,否则在用户控件@OutputCache                            指定中必须包含该属性。页面输出缓冲不支持此属性
VaryByCustom:根据自定义的文本来改变缓存内容。如果赋予该属性的值为browser,缓存将随浏览器名称和主要版本信息的不同                              而不同;如果值是customstring,还必须重写Global.asax 中的 GetVaryByCustomString 方法
VaryByHeader:根据HTTPt头信息来改变缓存内容,当有多重头信息时,输出缓冲会为每个指定的HTTP头信息保存不同的页面文                              档,该属性可以应用缓冲所有 HTTP 1.1 的缓冲内容,而不仅限于ASP.NET缓存。页面部分缓存不支持此属性
VaryByParam:该属性使用一个分高分割的字符串列表使输出缓存发生改变。默认情况下,这些字符串与用GET或POST方法发送                             的查询字符串值对应。当将该属性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请                             求文档,可能的值包括none、星号(*)以及任何有效的查询字符串或POST参数名称。

3. 页面部分缓存

(1)页面部分缓存简介

       通常情况下,缓存整个页是不合理的,因为页的某些部分可能在每一次请求是都进行更改,这种情况下,值能缓存页的一部分,即页面部分缓存。页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态内容。
       页面部分缓存的实现包括缓存和缓存后替换两种方式。前者页可称为片段缓存。这种方式允许将需要缓存的信息包含在一个用户控件内,然后将该用户控件标记为可缓存的,以此来缓存页面输出的部分内容。

(2)使用@OutputCache指令设置用户控件缓存功能

3.页面数据缓存

(1)页面数据缓存简介

       页面数据缓存即应用程序数据缓存,它提供了一种编程方式,可通过键/值将任意数据存储在内存中。使用应用程序缓存与使用程序状态类似,但是与应用程序状态不同的是,应用程序数据缓存中的数据时容易丢失的,即数据并不是在整个应用程序生命周期都存储在内存中的。应用程序数据缓存的优点是由ASP.NET管理缓存,它会在项过期、无效内存不足时移除缓存中的项,还可以胚子应用程序缓存,以便在移除项是通知应用程序。
       ASP.NET 中提供了类似于 Session 的缓存机制,即页面数据缓存:
 存储数据:
                  Cache["key"] = Value;
读取数据:
                  Value = (string) Cache["key'];
Cache类连个重要的方法:
public Object Add[Indert](
      string key,
      Object value,
      CacheDependency dependencied,
      DateTine absoluteExpiration,
      TimeSpan slidingExpiration,
      CacheItemPriority priority,
      CacheItemRemovedCallbac onRemoveCallback
)
key:用于引用该项的缓存键。
value:要添加到缓存的项
dependencies:该项的文件依赖项或缓存键依赖项,当任何依赖项更改时,该对象即无效,并从缓存中移除,如果没有依赖项,此                             参数可以设置为null。
absoluteExpiration:过期的绝对时间。
slidingExpiration:最后一次访问所添加对象时与该对象过期时之间的时间间隔。
priority:缓存的优先级,由CacheItemPriority枚举表示。缓存的优先级共有6种,从大到小以此是NotRemoveable, High,                                  AboveNormal, Normal, BelowNormal 和 Low.
OnRemoveCallback:从缓存中移除对象时所调用的委托。当从缓存中删除应用程序的对象时被调用。

         
原创粉丝点击