zoukankan      html  css  js  c++  java
  • .Net 2.0 缓存使用(转载)

     在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率;加上.NET 2.0提供的缓存依赖机制,我们可以很方便的对缓存进行管理更新;以下是本人学习的一点心得体会,希望能够起到抛砖引玉的作用。

    建立缓存依赖:

            /// <summary>
            
    /// 建立缓存依赖项
            
    /// </summary>
            
    /// <returns></returns>

            private AggregateCacheDependency TableDependency()
            
    {
                AggregateCacheDependency dependency 
    = new AggregateCacheDependency();
                dependency.Add(
    new SqlCacheDependency("MSPetShop4""表名称"));

                
    return dependency;
            }

    一个非常简单的方法,首先我们先看看两个.NET 2.0新增的两个类:

    AggregateCacheDependency在System.Web.Caching命名空间中,AggregateCacheDependency主要作用是用于组合 ASP.NET 应用程序的 Cache 对象中存储的项和 CacheDependency 对象的数组之间的多个依赖项。

    SqlCacheDependency也存在于System.Web.Caching命名空间中,这个类用于建立ASP.NET应用程序的Cache对象中存储的项和特定SQL Server数据库表之间的联系。

    SqlCacheDependency是如何建立Cache对象中存储的项和特定SQL Server数据库表之间的联系的呢?看一下Web.Config配置文件就一目了然了。

    <?xml version="1.0"?>
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
     <connectionStrings>
      <add name="LocalConnString" connectionString="Server=(Local);uid=sa;pwd=123456;DataBase=MSPetShop4"/>
     </connectionStrings>
     <system.web>
      <caching>
       <sqlCacheDependency enabled="true" pollTime="10000">
        <databases>
         <add name="MSPetShop4" connectionStringName="LocalConnString" pollTime="10000"/>
        </databases>
       </sqlCacheDependency>
      </caching>
      <compilation debug="true"/>
            </system.web>
    </configuration>


    配置节<databases><add name="MSPetShop4" connectionStringName="LocalConnString" pollTime="10000"/></databases>中配置了数据库信息,SqlCacheDependency类会自动完成对此配置节信息的读取以建立和数据库之间的联系。(注意)name="MSPetShop4"必须和new

    SqlCacheDependency("MSPetShop4", "表名称")中的数据库名称相一致。更多的配置信息可以查看(MSDN帮助文档)。

    使数据库支持SqlCacheDependency特性:

    要使得7.0或者2000版本的SQL Server支持SqlCacheDependency特性,需要对数据库服务器执行相关的配置步骤。有两种方法配置SQL Server:

    使用aspnet_regsql命令行工具,或者使用SqlCacheDependencyAdmin类。

    aspnet_regsql工具位于Windows\Microsoft.NET\Framework\[版本]文件夹中,如果要配置SqlCacheDependency,则需要以命令行的方式执行。

    以下是该工具的命令参数说明:
    -?  显示该工具的帮助功能;
    -S  后接的参数为数据库服务器的名称或者IP地址;
    -U  后接的参数为数据库的登陆用户名;
    -P  后接的参数为数据库的登陆密码;
    -E  当使用windows集成验证时,使用该功能;
    -d  后接参数为对哪一个数据库采用SqlCacheDependency功能;
    -t  后接参数为对哪一个表采用SqlCacheDependency功能;
    -ed  允许对数据库使用SqlCacheDependency功能;
    -dd  禁止对数据库采用SqlCacheDependency功能;
    -et  允许对数据表采用SqlCacheDependency功能;
    -dt  禁止对数据表采用SqlCacheDependency功能;
    -lt  列出当前数据库中有哪些表已经采用sqlcachedependency功能。

    比如在petshop4.0的数据库中使用SqlCacheDependency特性:aspnet_regsql -S localhost -E -d MSPetShop4 -ed

    以上面的命令为例,说明将对名为MSPetShop4的数据库采用SqlCacheDependency功能,且SQL Server采用了windows集成验证方式。我们还可以

    对相关的数据表执行aspnet_regsql命令,如:
    aspnet_regsql -S localhost -E -d MSPetShop4 -t Item -et
    aspnet_regsql -S localhost -E -d MSPetShop4 -t Product -et
    aspnet_regsql -S localhost -E -d MSPetShop4 -t Category -et

    最后为使用缓存:
              

            protected void Page_Load(object sender, EventArgs e)
            
    {
                
    if (!IsPostBack)
                
    {
                    
    string key = "TableCache"//缓存名称
                    DataSet data = (DataSet)HttpRuntime.Cache[key]; //获取缓存

                    
    // 判断缓存数据为空
                    if (data == null)
                    
    {
                        
    // 获取数据
                        data = GetDataSource(); 

                        
    // 创建缓存依赖
                        AggregateCacheDependency cd = TableDependency();

                        
    // 创建缓存
                        HttpRuntime.Cache.Add(key, data, cd, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration, 

    CacheItemPriority.High, 
    null);
                    }


                    GridView1.DataSource 
    = data; //绑定数据
                    GridView1.DataBind();
                }

            }


    获取数据源的方法,结合实际使用做修改。

            private DataSet GetDataSource()
            
    {
                
    string ConnectionStringLocal = ConfigurationManager.ConnectionStrings["LocalConnString"].ConnectionString;
                SqlConnection connPubs 
    = new SqlConnection(ConnectionStringLocal);
                SqlDataAdapter dad 
    = new SqlDataAdapter("SELECT TOP 50 * FROM Product", connPubs);
                DataSet ds 
    = new DataSet();
                dad.Fill(ds);

                
    return ds;
            }

    就这么简单:)
    转载自:http://www.cnblogs.com/cen123/archive/2007/03/27/690099.html

  • 相关阅读:
    企业搜索引擎开发之连接器connector(二十九)
    solr&lucene3.6.0源码解析(四)
    solr&lucene3.6.0源码解析(三)
    elasticsearch 7.7.0 最新版+Java High Level REST Client测试
    自制聊天软件测试
    网页正文内容抽取测试
    Kernel Functions for Machine Learning Applications
    Latent semantic analysis note(LSA)
    jQuery插件备忘
    比较成系列的文章[备份.感谢这些作者的辛苦]
  • 原文地址:https://www.cnblogs.com/purplefox2008/p/1565868.html
Copyright © 2011-2022 走看看