旅途笔记

岂有豪情似旧时,花开花落两由之
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

缓存 Output Cache

Posted on 2006-07-20 17:25  allonkwok  阅读(265)  评论(0编辑  收藏  举报
当一份asp.net网页第一次被访问,会被编译成IL,接着是Native Code,而Native Code会缓存成Page类,在下一次用户请求同一页面的时候直接供其使用。当asp.net初始文件被更新,或者超出缓存区的时间设置(Timeout),整份asp.net网页会被重新编译,并再一次置入Page类的缓存区中。

一、超时设置
<%@ OutputCache Duration="600"%>

二、指定绝对到期日
    假如要在10分钟之后重新缓存一次页面,可以设置Response.Cache对象的两个方法,SetExpires与SetCacheability,程序会自动更改HTTP标头。
Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
Response.Cache.SetCacheability(HttpCacheability.Public);
    以上两个语句可以精简地写成这样
Response.Expires="600";
Response.CacheControl
="public";

三、指定相对到期日
    用来指定最后一次访问后,多久超时。
    举例来说,某网站可能一天才更新一次,但访问量动辄数万,如果设置为第一次访问后10分钟失效,再缓存一次,似乎没什么帮助,因此改为最后一次被调用后多久才失效,也就是相对到期日。
    关键在于 Response.Cache 对象的 SetSlidingExpiration 属性设置为 True
Response.Cache.SetExpires(DateTime.Now.AddSeconds(3600));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetSlidingExpiration(True);