在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
为克服此问题,一些网站用页面生成引擎对所有页面生成html静态页面。但这样生成的页面对所有用户的请求内容都是相同。 ASP.NET 提供了缓存技术有助于我们最大程度地解决这个问题。它能缓存输出的页面,保存在存储器当中,缓存用户请求的内容。缓存的特点可以根据不方式来定制的。 缓存一个页面 <%@ OutputCache Duration=5 VaryByParam="None" %> 如你所见,这条指令有两个属性。他们是: Duration - 被缓存输出的内容有效期是多少秒。在时间超过指定的有效期后,过期的缓存内容会删除,并会在下次用户请求中重新调用页面生成缓存内容。再次的缓存内容过10秒后此过程又会重复。 <%@ OutputCache Duration=10 VaryByParam="id" %> 对这样两种不同请求的页面内容每一个都会被缓存 Duration 属性指定的时间长度。。 为了指定多个参数的情形,要使用分号来分隔参数名称。如果我们指定 VaryByParam 属性为“*”,缓存内容会因传递的不同查询字串参数而不同。 一些动态页面要根据不同的浏览来生成不同的内容。在这种情况下就要规定缓存输出内容要因不同浏览器而不同。@OutputCache 命令要改为: <%@ OutputCache Duration=5 VaryByParam="id" VaryByCustom="browser" %> 这条指令不仅让缓存输出内容因浏览器不同而不同,而且也会因浏览器版本不同而不同,如 IE5、IE 6、Netscape 4、Netscape 6 都会获得不同输出的缓存版本。
解决方法是把标题内容放入一个用户控件当中,然后指定这个用户控件应该被缓存。这个技术被称为局部缓存(fragment caching)。 为了指定应该被缓存的用户控件,我们利用 @OutputCache 指令,就象整个页面缓存的用法一样。 <%@ OutputCache Duration=10 VaryByParam="None" %> 在上面的指令中,用户控件缓存有效期是 Duration 属性指定的时间(10 秒)。不论查询字串和浏览器类型/版本如何,缓存输出的内容是相同的。。
Cache["name"]="Smitha"; 这个存储的字串值可以象这样得到: if (Cache["name"] != null) 为把对象插入缓存中,可以使用 Cache 类的 Add 方法或者不同版本的 Insert 方法。这些方法可能允许我们使用这个 Cache 类提供的更强大功能,下面是利用了 Insert 方法的一个重载: Cache.Insert("Name", strName, 头两个参数是是键名和被插入的对象。第三个参数是 CacheDependency 类型,帮我们对名为 name.txt 文件设置值的依赖项。因此一旦这个文件发生改变,在缓存中的这个值会被删除。我们可以指定 “null” 值来表明没有依赖项。第四个参数指定了从缓存删除这个值的时间。最后一个参数是缓存过期时间可调的参数,它指明了从最后一次访问缓存时间到它被删除的时间间隔。 当可用系统内存不多时,缓存自动从内存中删除使用少的项目。这个过程被称为净化(scavenging)。我们可以为添加进缓存中的项目指定优先级,以便某些项目能得到优先处理: Cache.Insert("Name", strName, 枚举类型 CacheItemPriority 给成员设置不同的优先级。CacheItemPriority.High 给项目分配了个高优先级,以使该项目减少被缓存删除的可能性。
结语 在一个启用缓存的含子控件嵌套风格中可用局部缓存。我还没有测试如何利用这一点,因此也就没有包括这个技巧的说明。同时 Cache 类的 Insert 方法也就没有在此讨论了。我希望本文对读者而言是一个研究多姿多彩的 ASP.NET 世界的一个良好的开端。 说明 |
请发表评论