一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - ASP.NET數(shù)據(jù)庫緩存依賴實(shí)例分析

ASP.NET數(shù)據(jù)庫緩存依賴實(shí)例分析

2019-12-09 13:35shichen2014 ASP.NET教程

這篇文章主要介紹了ASP.NET數(shù)據(jù)庫緩存依賴,以實(shí)例的形式分析總結(jié)了數(shù)據(jù)庫緩存依賴的原理與用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了ASP.NET數(shù)據(jù)庫緩存依賴,分享給大家供大家參考。具體如下:

一般在ASP.NET中,Cache類最酷的特點(diǎn)是它能根據(jù)各種依賴來良好的控制自己的行為。以文件為基礎(chǔ)的依賴是最有用的,文件依賴項(xiàng)是通過使用 Cache.Insert 并提供引用文件的 CacheDependency 對象添加的

 

復(fù)制代碼代碼如下:
Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("authors.xml")));

 

但是當(dāng)我們想讓緩存根據(jù)數(shù)據(jù)庫中表的變化而失效并重建該緩存的時(shí)候,應(yīng)該怎么做呢 – 這種情景在很多應(yīng)用程序中都存在。Asp.net沒有為監(jiān)視數(shù)據(jù)庫表的變化提供內(nèi)在的直接緩存支持。利用SQL Server的不常用的系統(tǒng)存儲(chǔ)過程sp_makewebtask ,是可以達(dá)到這個(gè)目的的,這個(gè)存儲(chǔ)過程本來是用作從查詢中生成web頁面的,但是我們只要稍作修改- 在觸發(fā)器中使用它,我們就可以取得一個(gè)合理有效的途徑,當(dāng)數(shù)據(jù)庫某張表的記錄被更新,刪除或者修改時(shí)來修改某個(gè)特定的文件,這樣會(huì)使在CacheDependency實(shí)例中的文件監(jiān)視進(jìn)程偵測到文件的變化,從而使緩存失效。事實(shí)上,因?yàn)镃acheDependency 類工作在UNC文件協(xié)議上,我們可以在整個(gè)Web Farm上部署這個(gè)解決方案,Web Farm上每臺(tái)機(jī)器上的應(yīng)用程序副本都會(huì)通過UNC文件路徑來監(jiān)視WebFarm中某臺(tái)單個(gè)機(jī)器上的同一個(gè)文件

廢話少說,讓我們創(chuàng)建一個(gè)簡單的web應(yīng)用程序,來演示它是如果工作的。首先,我們將會(huì)使用我們SQL Server中都信賴的Northwind范例數(shù)據(jù)庫。創(chuàng)建一個(gè)簡單的DataGrid來顯示Employees表中的記錄. 我們要做的第一件事情就是創(chuàng)建觸發(fā)器。

 

復(fù)制代碼代碼如下:
CREATE TRIGGER WriteCacheDepFile ON [dbo].[Employees]
FOR INSERT, UPDATE, DELETE
AS
EXEC sp_makewebtask '\\peter\C$\Cache\mycache.txt', 'SELECT top 1 FirstName FROM employees'

 

以上存儲(chǔ)過程就是簡單的告訴SQL Server,如果Employee表發(fā)生任何變動(dòng),就根據(jù)一個(gè)簡單的查詢來更新”mycache.txt”文件,有這個(gè)簡單的查詢語句其實(shí)足夠了,只要它是一個(gè)有效的T-SQL語句,SQL Server會(huì)很樂意的去更新那個(gè)文件。

接下來,我們需要?jiǎng)?chuàng)建一個(gè)目錄,并設(shè)為共享。你可能要更新該文件的訪問權(quán)限,以使它可以被寫入,注意,我這里使用的是管理員共享”C$”.另外,你還需要?jiǎng)?chuàng)建一個(gè)空的文本文件,"mycache.txt".

好,現(xiàn)在可以創(chuàng)建我們的應(yīng)用程序了。首先,在web.config文件中輸入依賴文件名稱,這樣做可以使我們在修改依賴文件的時(shí)候不需要重新部署應(yīng)用程序。

在web.config文件的根部,添加appSettings配置節(jié):

 

復(fù)制代碼代碼如下:
</system.web>
<appSettings>
<!—緩存依賴文件路徑 -->
<add key="dependencyFile" value="\\peter\Cache\mycache.txt" />
</appSettings>
</configuration>

 

現(xiàn)在,讓我們在Global類中建立緩存機(jī)制,這樣我們不需要在任何頁面中編寫特定的代碼

 

復(fù)制代碼代碼如下:
public class Global : System.Web.HttpApplication
{
Cache _cache =null;
public static bool blnReflash = false;
public const string ConnStr = "server=localhost;database=Northwind;uid=sa;pwd=";
public const string strSQL = "SELECT EmployeeID, lastname, firstname FROM Employees";
protected void Application_Start(Object sender, EventArgs e)
{
_cache = Context.Cache;
RefreshCahe(null,null,0);
}
protected void Session_Start(Object sender, EventArgs e)
{
if(HttpContext.Current.Cache["Employees"]==null)
RefreshCache(null,null,0);
}
static void RefreshCache(string key,object item,CacheItemRemoveReason reason)
{
SqlDataAdapter adapter = new SqlDataAdapter(strSQL,ConnStr);
DataSet ds = new DataSet();
adapter.Fill(ds,"Employees");
CacheItemRemovedCallback onRemove = new CacheItemRemovedCallback(RefreshCache);
}

 

希望本文所述對大家的asp.net程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品自在自线观看 | 日韩欧美一区二区三区视频 | 免费aⅴ在线 | 91九色国产porny | 亚洲国产在 | 精品国产原创在线观看视频 | 大乳一级一区二区三区 | 二次元美女脱裤子让男人桶爽 | 好大~好爽~再进去一点 | 日韩视频一区二区 | 日本无吗免费一二区 | 国偷盗摄自产福利一区在线 | 91麻豆精品激情在线观看最新 | 国产精品久久久久久久久久久搜索 | 亚洲视频一 | 五月婷婷丁香色 | 日韩欧美亚洲每日更新网 | 996热视频 | 黑人艹 | 日本不卡在线视频高清免费 | 天堂69亚洲精品中文字幕 | 国产免费小视频在线观看 | 久久伊人在 | www.毛片在线观看 | 紧身短裙女教师波多野 | 四虎成人免费大片在线 | 久久WWW免费人成一看片 | 精品视频一区二区观看 | 亚洲婷婷在线视频 | 四虎在线永久视频观看 | 免费在线观看中文字幕 | 水野朝阳厨房系列在线观看 | 青青青国产手机在线播放 | 免费国产影视观看网站入口 | 2023毛片| 欧美精品99| 波多野结衣 在线播放 | 三级理论在线观看 | 成人夜视频寂寞在线观看 | 国产高清视频一区二区 | 国产国语videosex另类 |