• ASP.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 节点中添加,缓存配置,代码如下

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


    web.config配置
    <!--页面缓存配置-->
                <outputCache enableOutputCache="true"/>
                <outputCacheSettings>
                    <outputCacheProfiles>
                        <add name="MyPageCache" duration="30" enabled="true"/>
                    </outputCacheProfiles>
                </outputCacheSettings>

                <!--数据库缓存依赖配置-->
                <sqlCacheDependency enabled="true" pollTime="1000">
                    <databases>
                        <add name="MySqlCache" connectionStringName="数据库连接字条串"/>
                    </databases>
                </sqlCacheDependency>

    参数说明: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建立 数据缓存那大小写一样

  • 相关阅读:
    mac下chrome快捷键,vscode快捷键
    css3 rgba()/opacity()
    sublime 将打字内容放在屏幕中央
    HDU 1427 速算24点【数值型DFS】
    HDU 1015 Safecracker【数值型DFS】
    HDU 2553 N皇后问题【棋盘型DFS】
    HDU 2660 Accepted Necklace【数值型DFS】
    2016中国大学生程序设计竞赛
    DFS之奇偶剪枝
    G
  • 原文地址:https://www.cnblogs.com/qzbnet/p/2362587.html
Copyright © 2020-2023  润新知