技术开发 频道

初探Asp.net缓存

  使用起来就很简单了,可以在页面头部的OutputCache指令中设置,会社DataSource空间中进行设置,设置格式为:“数据库名:表名”.里面的表名即是需要监测是否改变的表名,示例如下:

<%@ OutputCache Duration="30" VaryByParam="none" SqlDependency="DatabaseName:tableName" %>

  如果需要添加多个表,则用”;”进行分割

SqlDependency="database:table;database:table"

  方法二:使用通知机制(notification-based)

  使用通知机制配置起来要简便很多,但是sql server的版本需要9.0以上,也就是sql server 2005,使用这种方式需要将sql server的通知服务开启。

  使用通知机制可以对页面进行缓存,也可以对datasouce控件进行缓存,对页面进行缓存代码如下:

<%@ OutputCache Duration="30" VaryByParam="none" SqlDependency="CommandNotification" %>

  注意SqlDependency必须设置成CommandNotification。

  对于datasource控件,也是同样:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString
="<%$ ConnectionStrings:AdventureWorksConnectionString %>"
            SelectCommand
="SELECT top 10 * FROM [Person].[Contact]" EnableCaching="true" CacheDuration="10" SqlCacheDependency="CommandNotification"></asp:SqlDataSource>

  输出缓存(output Caching)

  输出缓存是页面级别的缓存,是将aspx页面内容在第一次请求后生成的静态页放入缓存,在不过期时间内每一次请求时从缓存中返回静态页,而不是重新走完Asp.net的生命周期。可以将可以通过在页面头部加入OutputCache指令实现,也可以通过HttpCachePolicy类实现。

  输出缓存可以缓存整个页面,也可以缓存部分页面,缓存页面的一部分是通过用户控件来实现。

  下面来看通过OutputCache指令实现页面缓存:

  前面已经看到,这种方式十分简单,下面说一下OutputCache的重点属性

  Duration

  页面过期的时间,单位为秒。超过过期时间后,则在下一次请求时页面会重新生成并缓存。

  VaryByHeader

  VaryByCustom

  VaryByParam

  VaryByControl

  VaryByContentEncodings

  这些属性都是为了保存页面的多个版本,比如说一个页面用于显示产品,则根据产品id的不同,缓存同一个页面的不同版本,具体的意思请看MSDN

  CacheProfile

  这个选项有些像连接字符串,作用只是将具体的缓存选项变成对于选项的引用,比如我们在Web.Config放入如下代码:

<caching>
        
<outputCacheSettings>
          
<outputCacheProfiles>
            
<add name="CacheProfile"
                  enabled
="true"
                  duration
="60"
                   varyByParam
="product:id"/>
          
</outputCacheProfiles>
        
</outputCacheSettings>
            
      
      
</caching>
0
相关文章