您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“ASP.NET數(shù)據(jù)庫(kù)緩存方式”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“ASP.NET數(shù)據(jù)庫(kù)緩存方式”吧!
ASP.NET數(shù)據(jù)庫(kù)緩存是什么呢?首先我們來(lái)認(rèn)識(shí)一下ASP.NET數(shù)據(jù)庫(kù)緩存淺析,為了創(chuàng)建可擴(kuò)展、高性能的基于Web的應(yīng)用,ASP.NET提供一個(gè)稱(chēng)為數(shù)據(jù)緩存(Data Caching)的特性。數(shù)據(jù)緩存支持將頻繁訪問(wèn)的數(shù)據(jù)對(duì)象可編程地存放在內(nèi)存中。這一特性可擴(kuò)展以廣泛地提高查詢(xún)Oracle數(shù)據(jù)庫(kù)中數(shù)據(jù)的ASP.NET應(yīng)用的性能。本文講述一個(gè)策略,可用于采用Web Farm環(huán)境中的ASP.NET Web應(yīng)用緩存Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)。這個(gè)技巧允許在內(nèi)存中緩存頻繁訪問(wèn)的Oracle數(shù)據(jù)庫(kù)數(shù)據(jù),而不是頻繁訪問(wèn)數(shù)據(jù)庫(kù)來(lái)取數(shù)據(jù)。這可以幫助避免到Oracle數(shù)據(jù)庫(kù)服務(wù)器的不必要的遠(yuǎn)路。進(jìn)一步的,文章提出了一個(gè)保持緩存數(shù)據(jù)以使其始終與Oracle數(shù)據(jù)同步的實(shí)現(xiàn)。
ASP.NET中的數(shù)據(jù)緩存
ASP.NET數(shù)據(jù)庫(kù)緩存淺析由Cache類(lèi)和System.Web.Caching命名空間中的CacheDependency類(lèi)支持。Cache類(lèi)提供向緩存插入和從中取出數(shù)據(jù)的方法。CacheDependency類(lèi)允許為緩存中數(shù)據(jù)項(xiàng)的指定其依賴(lài)項(xiàng)。當(dāng)我們用Insert和Add方法將項(xiàng)目加入緩存中,可以指定一個(gè)項(xiàng)目的過(guò)期(expiration)策略。我們可以用Insert方法的absoluteExpiration屬性來(lái)定義緩存中一個(gè)項(xiàng)目的生命期。這個(gè)屬性允許你指定相應(yīng)數(shù)據(jù)項(xiàng)過(guò)期的準(zhǔn)確時(shí)間。也可以使用slidingExpiration屬性來(lái)指定項(xiàng)目過(guò)期的流逝時(shí)間(基于它被訪問(wèn)的時(shí)間)。一旦一個(gè)項(xiàng)目過(guò)期,它從緩存中被清除。除非它再次被加入緩存中,否則再試圖訪問(wèn),將返回一個(gè)空值。
設(shè)定緩存依賴(lài)
ASP.NET數(shù)據(jù)庫(kù)緩存淺析使我們可以基于一個(gè)外部文件、目錄或另一個(gè)緩存項(xiàng)來(lái)定義一個(gè)緩存項(xiàng)的依賴(lài),即所謂文件依賴(lài)與鍵依賴(lài)。若一個(gè)依賴(lài)項(xiàng)改變,緩存項(xiàng)自動(dòng)失效并被從緩存中清除。當(dāng)相應(yīng)的數(shù)據(jù)源改變時(shí),我們可以用這種方法來(lái)從緩存中刪除項(xiàng)目。例如,若我們的應(yīng)用從一個(gè)XML文件中取數(shù)據(jù)并顯示在一個(gè)表格(grid)中,我們可以把文件中的數(shù)據(jù)存放到緩存中,并設(shè)定緩存依賴(lài)于那個(gè)XML文件。當(dāng)XML文件被更新,數(shù)據(jù)項(xiàng)就從緩存中被清除出去。這一事件發(fā)生時(shí),應(yīng)用重新讀入XML文件,***的數(shù)據(jù)項(xiàng)副本被再一次插入緩存中。進(jìn)一步的,回調(diào)事件處理器可被設(shè)定為一個(gè)監(jiān)聽(tīng)者,當(dāng)緩存項(xiàng)被刪除時(shí)得到通知。這使得我們不需要反復(fù)輪詢(xún)緩存來(lái)確定數(shù)據(jù)項(xiàng)是否已無(wú)效。
Oracle數(shù)據(jù)庫(kù)上的ASP.NET緩存依賴(lài)
現(xiàn)在考慮這樣一個(gè)情景:數(shù)據(jù)存放于Oracle數(shù)據(jù)庫(kù)中,一個(gè)ASP.NET應(yīng)用通過(guò)ADO.NET來(lái)訪問(wèn)。進(jìn)一步,我們假設(shè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)一般是靜態(tài)的,并被這個(gè)Web應(yīng)用頻繁訪問(wèn)。表上的DML操作很少而對(duì)數(shù)據(jù)有很多Select。這種情況是數(shù)據(jù)緩存技術(shù)的理想應(yīng)用。但不幸的是,ASP.NET并不允許設(shè)定一個(gè)緩存項(xiàng)依賴(lài)于存放在數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。進(jìn)一步,現(xiàn)實(shí)世界中,基于Web的系統(tǒng),Web服務(wù)器和Oracle數(shù)據(jù)庫(kù)服務(wù)器總是會(huì)運(yùn)行在不同的機(jī)器上,使得緩存無(wú)效操作更有挑戰(zhàn)性。另外,多數(shù)基于Web的應(yīng)用采用Web farms,同一個(gè)應(yīng)用的實(shí)例在不同的Web服務(wù)器上跑以負(fù)載均衡。這種情況使得數(shù)據(jù)庫(kù)緩存問(wèn)題稍稍復(fù)雜一些。
到此,相信大家對(duì)“ASP.NET數(shù)據(jù)庫(kù)緩存方式”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。