• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net中SqlCacheDependency缓存技术概述

    本文实例讲述了asp.net中SqlCacheDependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下:

    对于访问量大,但更新较少的网站中使用缓存技术,可以大大提高运行效率;加上.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; 
    }
    
    

    希望本文所述缓存技术对大家asp.net程序设计有所帮助。

    您可能感兴趣的文章:
    • Asp.Net Cache缓存使用代码
    • ASP.net Substitution 页面缓存而部分不缓存的实现方法
    • asp.net 客户端浏览器缓存的Http头介绍
    • asp.net(C#)遍历memcached缓存对象
    • ASP.NET性能优化之让浏览器缓存动态网页的方法
    • ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码
    • ASP.NET缓存管理的几种方法
    • C#缓存之SqlCacheDependency用法实例总结
    • asp.net页面SqlCacheDependency缓存实例
    • 在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency
    上一篇:asp.net中Timer无刷新定时器的实现方法
    下一篇:asp.net页面SqlCacheDependency缓存实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net中SqlCacheDependency缓存技术概述 asp.net,中,SqlCacheDependency,