ASP.NET有两种缓存:输出缓存(Output Cache) 和 数据缓存(Data Cache)。输出缓存存储了一个ASPX执行完毕后的最终HTML页面,建立在输出缓存上的特殊缓存叫片段缓存(Fragment Cache),顾名思义,片段缓存是为了弥补输出缓存在局部控制力上的不足,用来对页面中的控件进行缓存。数据缓存,或者说对象缓存,在空间上与输出缓存相互补充。在数据缓存上发展而来的还有一个数据源缓存(Data source cache)。
    输出缓存是缓存整个页面,用页面指令OutputCache来控制,指令属性有:
Duration
    指定输出缓存的持续时间,单位为秒
VaryByParam
    指定QueryString的一个参数作为输出策略的参考标准,比如第一次请求一个设置了输出缓存的页面,QueryString为空,服务器返回结果并对结果进行缓存。第二次请求增加了一个查询参数,假设为id,并且id是被VaryByParam指定的值,那么服务器就不会讲第一次的缓存返回,而是重新生成结果返回并对结果进行缓存。到了第三次,请求方式和第一次一样,这时候如果第一次请求的缓存没有过期那么就返回第一次请求产生的缓存。(汗…)VaryByParam值为none时,忽视QueryString,值为*时参考所有QueryString,有多个参考值时用分号隔开。
VaryByCustom
    自定义参考标准(比如说browser,根据浏览器),.net3.5有GetVaryByCsutomString方法,通过重写该方法可以真正达到自定义.
VaryByControl
    根据控件的值指定相应的缓存策略。
VaryByHeader
    和VaryByParam差不多,只是参考标准从QueryString变成了HTTP头信息。
数据缓存是一个类似于Application的全局对象,并且是线程安全的,无需LOCK或者UNLOCK,缓存中的数据会在过期之后自动删除,所以引用的时候一定要检查对象是否有效。
缓存优先级(Cache Priority)
High
AboveNormal
Normal
BelowNormal
Low
NotRemovable

Cache Dependencies
依赖其他缓存项
依赖文件或者文件夹
依赖于数据库
  1. 继承CacheDependency
  2. 自定义业务逻辑,依赖项改变的时候调用base.NotifyDependencyChanged方法通知缓存依赖项已经改变
页面指令标注: <%@ Page Aysnc=”true” AysncTimeout=”60” … %>注册Aysnchronous Task(Class:PageAysncTask)的方法有两种:RegisterAysncTask和AddOnPreRenderCompleteAsync 当注册多个Task时,RegisterAysncTask方法同时执行任务,而后者是按注册序列来执行。
Init
Load
Control Events
PreRender
BeginTask()
Asynchronous Task
EndTask()
PreRenderComplete
SaveState
Render
posted on 2009-10-21 14:45  螃蟹往前冲  阅读(571)  评论(0)    收藏  举报