浅说ASP.NET 缓存

目录

ASP.NET 缓存概述      

页面缓存概述

页面部分缓存

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

使用PartialCachingAttribute类设置用户控件缓存功能

 使用ControlCachePolicy类

页面数据缓存概述


前言:

这篇文章,主要讲述ASP.NET相关知识,主要有ASP.NET缓存,页面缓存。部分缓存和数据缓存。

ASP.NET 缓存概述      

缓存是ASP.NET中非常重要的一个特性,可以生成高性能的Web应用程序。生成高性能的Web应用程序最重要的因素之一,就是将那些频繁访问而且不需要经常更新的数据存储在内存中,当客户端再一次访问这些数据时,可以避免重复获取满足先前请求的信息,快速显示请求的Web页面。

 ASP.NET中有3种Web应用程序可以使用缓存技术,即页面输出缓存、页面部分缓存和页面数据缓存。ASP.NET的缓存功能具有以下优点:

支持更为广泛和灵活的可开发特征。ASP.NET 2.0及以上版本包含一些新增的缓存控件和API,如自定义缓存依赖、Substitution控件、页面输出缓存API等,这些特征能够明显改善开发人员对于缓存功能的控制。
增强可管理性。使用ASP.NET提供的配置和管理功能,可以更加轻松地管理缓存。
提供更高的性能和可伸缩性。ASP.NET提供了一些新的功能,如SQL数据缓存依赖等,这些功能将帮助开发人员创建高性能、伸缩性强的Web应用程序。

页面缓存概述

      页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中。当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期。

在这个过程中,缓存内容直接发送给用户,而不必再次经过页面处理生命周期。通常情况下,页面输出缓存对于那些包含不需要经常修改内容,但需要大量处理才能编译完成的页面特别有用。另外,页面输出缓存是将页面全部内容都保存在内存中,并用于完成客户端请求。

        页面输出缓存需要利用有效期来对缓存区中的页面进行管理。设置缓存的有效期可以使用@OutputCache指令。@OutputCache指令的格式如下:

<%@ OutputCache Duration="#ofseconds"  

Location="Any | Client | Downstream | Server | None | ServerAndClient "  

Shared="True | False"  

VaryByControl="controlname"  

VaryByCustom="browser | customstring"  

VaryByHeader="headers"  

VaryByParam="parametername" %>

页面部分缓存

      页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态内容。

      页面部分缓存的实现包括控件缓存和缓存后替换两种方式。前者也可称为片段缓存,这种方式允许将需要缓存的信息包含在一个用户控件内,然后将该用户控件标记为可缓存的,以此来缓存页面输出的部分内容。例如,要开发一个股票交易的网页,每支股票价格是实时变动的,因此,整个页面必须是动态生成且不能缓存的,但其中有一小块用于放置过去一周的趋势图或成交量,它存储的是历史数据,这些数据早已是固定的事实,或者需要很长一段时间后才重新统计变动,将这部分缓存下来有很高的效益,可以不必为相同的内容做重复计算从而浪费时间,这时就可以使用控件缓存。缓存后替换与用户控件缓存正好相反。这种方式缓存整个页,但页中的各段可以是动态的。

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

      @OutputCache指令以声明方式为用户控件设置缓存功能,用户控件缓存与页面输出缓存的@OutputCache指令设置方法基本相同,都在文件顶部设置@OutputCache指令,不同点包括如下两方面:

用户控件缓存的@OutputCache指令设置在用户控件文件中,而页面输出缓存的@OutputCache指令设置在普通ASP.NET文件中。
用户控件缓存的@OutputCache指令只能设置6个属性,即Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在页面输出缓存的@OutputCache指令字符串中设置的属性多达10个。

用户控件中的@OutputCache指令设置源代码如下:

<%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="ControlID" %>

使用PartialCachingAttribute类设置用户控件缓存功能

       使用PartialCachingAttribute类可以在用户控件(.ascx 文件)中设置有关控件缓存的配置内容。PartialCachingAttribute类包含6个常用属性和4种类构造函数,其中6个常用属性是Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam,这里重点介绍PartialCachingAttribute类中的构造函数。PartialCachingAttribute类中的4种构造函数及其说明如表所示。

 使用ControlCachePolicy类

       ControlCachePolicy是.NET Framework中的类,主要用于提供对用户控件的输出缓存设置的编程访问。ControlCachePolicy类包含6个属性,分别是Cached、Dependency、Duration、SupportsCaching、VaryByControl和VaryByParams,如表所示。

页面数据缓存概述

      页面数据缓存即应用程序数据缓存,它提供了一种编程方式,可通过键/值将任意数据存储在内存中。

使用应用程序缓存与使用应用程序状态类似,但是与应用程序状态不同的是,应用程序数据缓存中的数据是容易丢失的,即数据并不是在整个应用程序生命周期中都存储在内存中的。应用程序数据缓存的优点是由ASP.NET管理缓存,它会在项过期、无效或内存不足时移除缓存中的项,还可以配置应用程序缓存,以便在移除项时通知应用程序。

      ASP.NET中提供了类似于Session的缓存机制,即页面数据缓存。利用数据缓存,可以在内存中存储各种与应用程序相关的对象。对于各个应用程序来说,数据缓存只是在应用程序内共享,并不能在应用程序间进行共享。Cache类用于实现Web应用程序的缓存,在Cache中存储数据的最简单方法如下:

Cache["Key"]=Value;

从缓存中取数据时,需要先判断一下缓存中是否有内容,方法如下:

Value=(string)Cache["key"];
If(Value!=null)
{
//do something
}

      Cache类有两个很重要的方法,即Add和Insert方法,其语法格式如下:

public Object Add[Insert] (string key,Object value,CacheDependency dependencies,

  DateTime absoluteExpiration,TimeSpan slidingExpiration,CacheItemPriority priority,

  CacheItemRemovedCallback onRemoveCallback)
key:用于引用该项的缓存键。
value:要添加到缓存的项。
dependencies:该项的文件依赖项或缓存键依赖项,当任何依赖项更改时,该对象即无效,并从缓存中移除,如果没有依赖项,则此参数可以设为null。
absoluteExpiration:过期的绝对时间。
slidingExpiration:最后一次访问所添加对象时与该对象过期时之间的时间间隔。
priority:缓存的优先级,由CacheItemPriority枚举表示。缓存的优先级共有6种,从大到小依次是NotRemoveable、High、AboveNormal、Normal、BelowNormal和Low。
onRemoveCallback:在从缓存中移除对象时所调用的委托(如果没有,可以为null)。当从缓存中删除应用程序的对象时,它将会被调用。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值