本文主要是爲了瞭解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(); } } }
通過以上的步驟,整個功能準備已經結束,運行程序,下面看下效果。初次加載呈現的頁面就是以下時間,再刷新後,時間依然以下顯示,證實程序的緩存功能生效了。那麼,是不是在被設置成依賴的表數據修改完成,緩存會被重置呢?
接下來,我在數據庫的表中隨便修改下表的數據後,馬上刷新頁面,看下,時間變了,那麼在繼續刷新頁面,看時間仍是以下圖的時間,也就是修改完數據表的值,緩存馬上也被更新了。
本身能夠照着測試下吧。