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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET數據庫緩存依賴實例分析

ASP.NET數據庫緩存依賴實例分析

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

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

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

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

 

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

 

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

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

 

復制代碼代碼如下:
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'

 

以上存儲過程就是簡單的告訴SQL Server,如果Employee表發生任何變動,就根據一個簡單的查詢來更新”mycache.txt”文件,有這個簡單的查詢語句其實足夠了,只要它是一個有效的T-SQL語句,SQL Server會很樂意的去更新那個文件。

接下來,我們需要創建一個目錄,并設為共享。你可能要更新該文件的訪問權限,以使它可以被寫入,注意,我這里使用的是管理員共享”C$”.另外,你還需要創建一個空的文本文件,"mycache.txt".

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

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

 

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

 

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

 

復制代碼代碼如下:
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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品国产精品精 | 免费国产在线视频 | 精品午夜寂寞影院在线观看 | 国产欧美日韩亚洲精品区2345 | 久久99国产综合精品AV蜜桃 | 美女扒开腿让男人桶爽动态图片 | 九九热在线视频 | 娇喘嗯嗯 轻点啊视频福利 九九九九在线精品免费视频 | 精品无人乱码一区二区三区 | 男神插曲女生动漫完整版动漫 | 私人影院在线播放 | 亚洲精品成人A8198A片漫画 | 91频视| 九九热免费在线观看 | www.av免费| avtt天堂网 手机资源 | 热热99| 日本一区二区三区久久精品 | 精灵之森高清在线 | 欧美一二区视频 | 视频在线观看高清免费看 | 国产真实乱子伦xxxxchina | 饭冈加奈子黑人解禁在线播放 | 日本久久热 | 久久久久久久久女黄9999 | 国产精选之刘婷野战 | 喜爱夜蒲2三级做爰 | 青青色综合 | 免费观看成年肉动漫网站 | 日韩在线中文字幕 | 嗯啊在线观看免费影院 | 成人尤物 | yy8090韩国日本三理论免费 | 午夜在线观看免费完整直播网 | 成人亚洲精品一区 | 精品国产精品人妻久久无码五月天 | 视频大全在线观看网址 | 四虎在线精品免费高清在线 | 动漫美女被吸乳 | 国产成人小视频 | 暖暖暖免费观看在线观看 |