ASP.NET MVC 實現與SQLSERVER的依賴緩存

本文主要是爲了瞭解ASP.NET MVC 實現與SQLSERVER的依賴緩存的功能,針對本身對於這方面知識的學習的過程的一個記錄。因爲本人也是初次瞭解這個知識點,有哪些錯誤,還望高手不吝賜教哦。好,下面正式進入話題。html

一、測試的環境及工具: vs2012 sqlserver2008r2 web

二、測試目的:當數據庫的值有變化時候,頁面的緩存也會及時更新。sql

具體步驟:數據庫

一、在VS2012中新建一個ASP.NET MVC 的空的項目。緩存

二、新建一個HomeController ,並建立Index試圖。代碼很簡單,以下服務器

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

    }

視圖代碼很簡單,就是輸出系統當前的時間,以便測試中能很清晰的判斷出訪問當前頁面時候,是緩存的數據,仍是從服務器最新返回的數據。asp.net

 

@{
    Layout = null;
}

<!DOCTYPE html>

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

三、配置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>的屬性,在此我就不詳細介紹了,相關資料你們查閱一下就能夠。 sqlserver

四、SQLSERVER2008的數據緩存依賴的功能配置。學習

檢查 Service Broker是否開啓:Select DATABASEpRoPERTYEX('test','IsBrokerEnabled')   若是爲1表示成功,0表示未成功。

如未開啓執行

ALTER DATABASE test SET
ENABLE_BROKER
GO

爲sql緩存依賴啓用某表,也就是指定哪張表的數據有變化時候,會更新緩存信息。主要用到asp.net_regsql.exe,該文件存放於C:\Windows\Microsoft.NET\Framework\v4.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
成功開啓以下圖

五、爲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();
        }

    }
}

 

通過以上的步驟,整個功能準備已經結束,運行程序,下面看下效果。初次加載呈現的頁面就是以下時間,再刷新後,時間依然以下顯示,證實程序的緩存功能生效了。那麼,是不是在被設置成依賴的表數據修改完成,緩存會被重置呢?

接下來,我在數據庫的表中隨便修改下表的數據後,馬上刷新頁面,看下,時間變了,那麼在繼續刷新頁面,看時間仍是以下圖的時間,也就是修改完數據表的值,緩存馬上也被更新了。

    本身能夠照着測試下吧。

相關文章
相關標籤/搜索