|
概述
緩存學(xué)術(shù)一些的解釋是”將常用數(shù)據(jù)放入易于讀取的地方以提高性能”。而對(duì)于ASP.NET來(lái)說(shuō),需要被緩存的對(duì)象多種多樣,包括從數(shù)據(jù)庫(kù)中提取出來(lái)的數(shù)據(jù),以及ASPx頁(yè)面生成的靜態(tài)頁(yè),甚至是編譯好的程序集。合理利用緩存能讓ASP.NET的性能大幅提升,下面將對(duì)ASP.NET中的緩存機(jī)制進(jìn)行簡(jiǎn)單概述。
緩存的分類
在ASP.NET中,大部分緩存機(jī)制是保存在cache對(duì)象中,也就是服務(wù)器內(nèi)存的一部分。當(dāng)用戶請(qǐng)求數(shù)據(jù)時(shí),如果數(shù)據(jù)已經(jīng)被緩存,則用戶所提取的數(shù)據(jù)直接從服務(wù)端返回,而不是從數(shù)據(jù)庫(kù)等底層數(shù)據(jù)庫(kù)提取。這對(duì)性能的提升不得不說(shuō)很有幫助。下面來(lái)看ASP.NET中幾種緩存機(jī)制。
程序集緩存
簡(jiǎn)單的說(shuō),這種緩存是ASP.NET自帶的,無(wú)需開(kāi)發(fā)人員進(jìn)行參與的緩存方式。即當(dāng)?shù)谝淮握?qǐng)求服務(wù)器時(shí),Page類以及相關(guān)程序集被編譯,當(dāng)下次請(qǐng)求時(shí),訪問(wèn)緩存后的編譯而不是重新編譯。CLR會(huì)自動(dòng)檢測(cè)代碼的改變,如果代碼改變后,當(dāng)下次訪問(wèn)時(shí),相關(guān)代碼會(huì)被重新編譯。
數(shù)據(jù)源緩存
數(shù)據(jù)源緩存,顧名思義,也就是利用數(shù)據(jù)源控件對(duì)獲取的數(shù)據(jù)進(jìn)行緩存的方式。這些控件包括SqlDataSource,ObjectDataSource等:
作為抽象類的DataSourceControl暴漏了如下屬性用于緩存:
名稱 | 說(shuō)明 |
CacheDuration | 獲取或設(shè)置以秒為單位的一段時(shí)間,數(shù)據(jù)源控件就在這段時(shí)間內(nèi)緩存 SelectMethod 屬性檢索到的數(shù)據(jù)。 |
CacheExpirationPolicy | 獲取或設(shè)置緩存的到期行為,該行為與持續(xù)時(shí)間組合在一起可以描述數(shù)據(jù)源控件所用緩存的行為。 |
CacheKeyDependency | 獲取或設(shè)置一個(gè)用戶定義的鍵依賴項(xiàng),該鍵依賴項(xiàng)鏈接到數(shù)據(jù)源控件創(chuàng)建的所有數(shù)據(jù)緩存對(duì)象。 |
EnableCaching | 獲取或設(shè)置一個(gè)值,該值指示 ObjectDataSource 控件是否啟用數(shù)據(jù)緩存。 |
而使用起來(lái)就非常簡(jiǎn)單了,只需要將緩存的相關(guān)屬性進(jìn)行設(shè)置即可。比如我想要當(dāng)前數(shù)據(jù)源緩存10秒,只需要設(shè)置EnableCaching屬性和CacheDuration屬性如下:
<ASP:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT top 10 * FROM [Person].[Contact]" EnableCaching="true" Cach
eDuration="10"> ASP:SqlDataSource>
NET技術(shù):ASP.NET緩存簡(jiǎn)介,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。