zoukankan      html  css  js  c++  java
  • .net 依赖缓存

    缓存——能很好的提高站点的性能。

    在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率;

    在.net中给我们提供了很好的缓存机制,页面缓存、数据缓存,还有很好的依赖缓存。

    依赖缓存好处就是,跟相依赖的项的改变有关,比如cacheTable表有数据改变时,数据已经缓存了的就会被清楚,重新读取新的数据,能保持数据的实时更新。

    头几天学习了下sql 依赖缓存,实现过程和步骤记录下:

    环境:windows 2003+IIS6  ,SQL2008+VS2008

    一、首先在sql2008中创建数据库CacheDB,创建表CacheTable

    然后在Visual Studio 命令提示下 运行aspnet_regsql.exe 应用程序(也可以在cmd下找到C:/Program Files/Microsoft Visual Studio 9.0/VC>运行)

    直接运行asp.net_regsql.exe创建的是选择的数据库的其他特性表,如:aspnet_Roles  等。

    下面以数据库CacheDB,数据表CacheTable为例;

    要创建数据库的依赖缓存 须运行如下命令:

    aspnet_regsql -S localhost -U sa  -P 123456 -d CacheDB -ed    //打开依赖的数据库,然后在创建依赖数据表

    aspnet_regsql -S localhost -U sa  -P 123456 -d CacheDB -et -t CacheTable   //创建依赖数据表

    当运行以上命令后会出现数据表 : AspNet_SqlCacheTablesForChangeNotification

    aspnet_regsql 命令参数说明:

     -? 显示该工具的帮助功能;

     -S 后接的参数为数据库服务器的名称或者IP地址;

     -U 后接的参数为数据库的登陆用户名;

     -P 后接的参数为数据库的登陆密码;

     -E 当使用windows集成验证时,使用该功能;

     -d 后接参数为对哪一个数据库采用SqlCacheDependency功能;

     -t 后接参数为对哪一个表采用SqlCacheDependency功能;

     -ed 允许对数据库使用SqlCacheDependency功能;

     -dd 禁止对数据库采用SqlCacheDependency功能;

     -et 允许对数据表采用SqlCacheDependency功能;

     -dt 禁止对数据表采用SqlCacheDependency功能;

     -lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。

    以上步骤是在数据库方面要实现处理的

    二、配置网站的web.config

    在system.web 节点中添加,缓存配置,代码如下

    这中方式主要是采用数据查询轮询的方式

    <system.web>
        <!--依赖缓存-->
        <caching>
          <!--5秒种轮询一次-->
          <sqlCacheDependency enabled="true" pollTime="5000">
            <databases>
              <add  name="CacheDB" connectionStringName="SQLServer"/>
            </databases>
            
            
          </sqlCacheDependency>
          
        </caching>
    </system.web>

    参数说明:

     pollTime :轮换的时间 (毫秒)

     CacheDB :为依赖的数据库

     SQLServer :为数据库连接字符串,connectionStringName中的。

     

    三、代码实现

        1、 对页面输出缓存使用轮询SQL缓存依赖
        根据上面的web.config配置
        在要缓存的页面中  <%@ OutputCache Duration="6000" VaryByParam="none" SqlDependency="CacheDB:CacheTable" %>  CacheTable为数据表

    当CacheTable数据表有改动时,刷新后会显示新的数据。

      2、对数据缓存使用轮询SQL缓存依赖

          对多个表实现依赖缓存,代码如下:

    //这里用GridView对数据进行绑定
    
    public void BindData()
    {
        string[] tableName = new string[]{"Cache","CacheTable" };//这里用cache表和CacheTable表,cache表的数据库的依赖建立方法如cacheTable。
         AggregateCacheDependency aggregateDependency = new AggregateCacheDependency();//实例化AggregateCacheDependency,用于多个实例SqlCacheDependency的加载
          DataSet ds = Cache["gridview"] as DataSet;//从缓存中读取数据
         if (ds == null)
           {
              ds = DBHelper.ExecuteAdapter("select * from CacheTable inner join Cache on CacheTable.ID=Cache.cacheID");//从数据库中读取数据 ,返回DataSet,ExecuteAdapter用的SQLHelper中的访问方法
                
              foreach (string table in tableName)
                 {
                    aggregateDependency.Add(new SqlCacheDependency("Cache", table));//把依赖实例加载到数组中 
                 } 
                // SqlCacheDependency Dependency = new SqlCacheDependency("Cache","CacheTable");//对单个表依赖缓存 直接实例化
                Cache.Insert("gridview", ds, aggregateDependency);//添加到缓存中
                  Response.Write(DateTime.Now.ToString());//输出当前时间,以测试是否缓存成功,
    
    
           }
      
            GridView1.DataSource = ds;
                GridView1.DataBind();
    }

     以上代码为在数据缓存中使用的依赖缓存

    注意:在web.config 中的DBCahce 和页面输出缓存中的DBCache:cahceTabel中 变量的大小写要与在用aspnet_regsql.exe建立 数据缓存那大小写一样

     

  • 相关阅读:
    Day 20 初识面向对象
    Day 16 常用模块
    Day 15 正则表达式 re模块
    D14 模块 导入模块 开发目录规范
    Day 13 迭代器,生成器,内置函数
    Day 12 递归,二分算法,推导式,匿名函数
    Day 11 闭包函数.装饰器
    D10 函数(二) 嵌套,命名空间作用域
    D09 函数(一) 返回值,参数
    Day 07 Day08 字符编码与文件处理
  • 原文地址:https://www.cnblogs.com/Scissors/p/2732130.html
Copyright © 2011-2022 走看看