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 后接的參数为数据库server的名称或者IP地址;

     -U 后接的參数为数据库的登陆username。

     -P 后接的參数为数据库的登录password;

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

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

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

     -ed 同意对数据库使用SqlCacheDependency功能;

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

     -et 同意对数据表採用SqlCacheDependency功能;

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

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

     

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

     

    二、配置站点的web.config

    在system.web 节点中加入。缓存配置,代码例如以下

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

     

     

    [xhtml] view plaincopy
    1. <system.web>  
    2.     <!--依赖缓存-->  
    3.     <caching>  
    4.       <!--5秒种轮询一次-->  
    5.       <sqlCacheDependency enabled="true" pollTime="5000">  
    6.         <databases>  
    7.           <add  name="CacheDB" connectionStringName="SQLServer"/>  
    8.         </databases>  
    9.           
    10.           
    11.       </sqlCacheDependency>  
    12.         
    13.     </caching>  
    14. </system.web>  

     

    參数说明:pollTime:轮换的时间 (毫秒),"CacheDB" :为依赖的数据库,SQLServer :为数据库连接字符串。connectionStringName中的。

    三、代码实现

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

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

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

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

    [c-sharp] view plaincopy
    1. //这里用GridView对数据进行绑定  
    2.   
    3. public void BindData()  
    4. {  
    5.     string[] tableName = new string[]{"Cache","CacheTable" };//这里用cache表和CacheTable表,cache表的数据库的依赖建立方法如cacheTable。  
    6.      AggregateCacheDependency aggregateDependency = new AggregateCacheDependency();//实例化AggregateCacheDependency,用于多个实例SqlCacheDependency的载入  
    7.       DataSet ds = Cache["gridview"as DataSet;//从缓存中读取数据  
    8.      if (ds == null)  
    9.        {  
    10.           ds = DBHelper.ExecuteAdapter("select * from CacheTable inner join Cache on CacheTable.ID=Cache.cacheID");//从数据库中读取数据 。返回DataSet,ExecuteAdapter用的SQLHelper中的訪问方法  
    11.               
    12.           foreach (string table in tableName)  
    13.              {  
    14.                 aggregateDependency.Add(new SqlCacheDependency("Cache", table));//把依赖实例载入到数组中   
    15.              }   
    16.             // SqlCacheDependency Dependency = new SqlCacheDependency("Cache","CacheTable");//对单个表依赖缓存 直接实例化  
    17.             Cache.Insert("gridview", ds, aggregateDependency);//加入到缓存中  
    18.               Response.Write(DateTime.Now.ToString());//输出当前时间,以測试是否缓存成功,  
    19.   
    20.   
    21.        }  
    22.     
    23.         GridView1.DataSource = ds;  
    24.             GridView1.DataBind();  
    25. }  

     

     

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

     

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

  • 相关阅读:
    移动web性能优化从入门到进阶
    授权保存到相册
    授权通讯地址
    windows putty 链接到 linux 免密码
    my docker note
    docker run -i -t --rm
    Command Not Found
    firewall-cmd 笔记
    vim 插件 Tabularize
    vim :find
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7073591.html
Copyright © 2011-2022 走看看