zoukankan      html  css  js  c++  java
  • ASP.NET MVC 实现与SQLSERVER的依赖缓存

    本文主要是为了了解ASP.NET MVC 实现与SQLSERVER的依赖缓存的功能,针对自己对于这方面知识的学习的过程的一个记录。由于本人也是初次了解这个知识点,有哪些错误,还望高手不吝赐教哦。好,下面正式进入话题。

    1、测试的环境及工具: vs2012 sqlserver2008r2 

    2、测试目的:当数据库的值有变化时候,页面的缓存也会及时更新。

    具体步骤:

    1、在VS2012中新建一个ASP.NET MVC 的空的项目。

    2、新建一个HomeController ,并创建Index试图。代码很简单,如下

     public class HomeController : Controller
        {
         
            public ActionResult Index()
            {
                return View();
            }
    
        }

    视图代码很简单,就是输出系统当前的时间,以便测试中能很清晰的判断出访问当前页面时候,是缓存的数据,还是从服务器最新返回的数据。

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <title>Index</title>
    </head>
    <body>
        <div>
            @{ Response.Write(DateTime.Now.ToString());}
        </div>
    </body>
    </html>

    3、配置web.config文件,主要是<system.web>节点下的<caching>节点的配置,代码如下

    <connectionStrings>
        
        <add name="TestConnectionString" connectionString="Data Source=.;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=sasa" />
    
    </connectionStrings>
    <caching>
          <sqlCacheDependency enabled="true" pollTime="2000">
            <databases>
              <add name = "test"
                 connectionStringName = "TestConnectionString"/>
            </databases>
          </sqlCacheDependency>
     </caching>

    关于<sqlCacheDependency>的属性,在此我就不详细介绍了,相关资料大家查阅一下就可以。 

    4、SQLSERVER2008的数据缓存依赖的功能配置。

    检查 Service Broker是否开启:Select DATABASEpRoPERTYEX('test','IsBrokerEnabled')   如果为1表示成功,0表示未成功。

    如未开启执行

    ALTER DATABASE test SET
    ENABLE_BROKER
    GO

    为sql缓存依赖启用某表,也就是指定哪张表的数据有变化时候,会更新缓存信息。主要用到asp.net_regsql.exe,该文件存放于C:WindowsMicrosoft.NETFrameworkv4.0.30319 。

    用法:打开命令提示工具,进入到asp.net_regsql.exe的所在目录,执行命令

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d <databaseName> -et -t <tableName>
    将其中<>中替换成你自己测试时候的参数。我测试时候执行的命令如下:
    aspnet_regsql.exe -S . -U sa -P sasa -ed -d test -et -t yh
    成功开启如下图

    5、为HomeController的ACTION 添加缓存的策略,很简单就是在某个ACTION上,添加[OutputCache(Duration = 900, SqlDependency = "test:YH")]标记

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace MvcApplication1.Controllers
    {
        public class HomeController : Controller
        {
            [OutputCache(Duration = 900, SqlDependency = "test:YH")]
            public ActionResult Index()
            {
                return View();
            }
    
        }
    }

    经过以上的步骤,整个功能准备已经结束,运行程序,下面看下效果。初次加载呈现的页面就是如下时间,再刷新后,时间依然如下显示,证明程序的缓存功能生效了。那么,是否是在被设置成依赖的表数据修改完成,缓存会被重置呢?

    接下来,我在数据库的表中随便修改下表的数据后,立刻刷新页面,看下,时间变了,那么在继续刷新页面,看时间还是如下图的时间,也就是修改完数据表的值,缓存立刻也被更新了。

        自己可以照着测试下吧。

  • 相关阅读:
    【Demo 0087】线程创建使用消亡
    【Demo 0083】查看进程启动时间
    【Demo 0080】进程
    关于.vhd文件的一个问题
    此服务器上的时间与主域控制器的时间不一致解决方法
    centos5.6下安装mysql5.5.16
    杂谈,入社见闻录
    Oracle 11g学习笔记(1)
    Oracle 11g学习笔记(2)
    转:如何彻底卸载MySQL
  • 原文地址:https://www.cnblogs.com/Y-X-DONG/p/4635160.html
Copyright © 2011-2022 走看看