ASP.NET Caching /2

來源:互聯網
上載者:User
asp.net Cache Dependencies
依賴可以使索引值在檔案改變時,或是在某一個指定時間被刪除   
。讓我們看一下每種依賴。

檔案依賴(File-based Dependency)
檔案依賴是指,當磁碟上的一個檔案改變時,刪除Cache對象中的對應一項。下面讓我們看一個從XML檔案中讀取資料的例子。

Dim dom As XmlDocument()
dom.Load(Server.MapPath("product.xml")
Cache("ProductData") = dom

當product.xml檔案內容改變時,我們應該使Cache中的資料失效。假設product.xml在aspx檔案的同一目錄中,我們可以使用以下的代碼:

Dim dependency as new CacheDependency(Server.MapPath("product.xml"))
Cache.Insert("ProductData", dom, dependency)

在這段代碼中,我們建立了一個CacheDependecy類的執行個體dependency,並將product.xml的路徑傳給這個執行個體。然後使用Insert方法建立一個依賴於檔案的索引值。

時間依賴(Time-based Dependency)
時間依賴就是在指定時間刪除Cache對象中的一項。同樣我們可以使用Insert方法來加入有時間依賴的索引值。

絕對時間—設定一個絕對的時間。例如,10分鐘以後,刪除此項。
相對時間—當一個Cache有若干時間沒有被訪問,刪除此項。
以下是一段代碼,使用相對時間依賴,使得ProductData當有10分鐘沒有被訪問的話,將被刪除。每一次對ProductData的訪問,都將使ProductData保持另一個10分鐘的有效。

' 10 minute time span
Cache.Insert("ProductData", LoadDataSet(), Nothing, DateTime.MaxValue, TimeSpan.FromSeconds(10))

以上是對Cache API的簡單討論,大家從這裡可以看出這套介面的簡單易用。ASP.NET使用這套API實現了網頁輸出快取。


網頁輸出快取(Page Output Caching)
ASP.NET的網頁輸出快取將把這個頁面的內容放在Cache中。我們已經看過如何將一個資料集放入緩衝。那麼,能不能將整個頁面緩衝呢?這樣的話,就不需要對每一個請求都執行代碼,可以直接從記憶體中擷取結果,這將帶來巨大的效能提高。

對頁面緩衝有兩種介面,高層介面和底層介面。這裡我們只討論高層介面。(對於底層介面,可以參考MSDN中的相關文章)

高層介面包括兩個頁面指示符,一個表明頁面重新整理的時間間隔,一個表明當某個參數變化時重新整理頁面。

<%@ OutputCache Duration="10" % VaryByParam="None">

將這個指示符放在頁面上部,頁面結果將被緩衝10秒。10秒以後,這個頁面將被重新執行。下面是一個例子。

<%@ OutputCache Duration="10" % VaryByParam="None">
<Script runat="server">
Public Sub Page_Load()
span1.InnerHtml = DateTime.Now.ToString("r")
End Sub
</Script>
<font size=6>The time is: <font color=red><span id="span1" runat="server"/></font></font>

這個頁面在第一次請求時被執行一次,顯示執行時的時間。這個結果將在緩衝裡儲存10秒。假如我們在10:30:12時請求這個頁面,在此後的10秒內,我們將會看到同樣的輸出。


結論
對於ASP程式員來說,緩衝是一項易用而強大的新技術。它的使用和ASP原來的Application,session對象有許多相似的地方,只是在Cache對象中的資料會自動失效。Cache還支援檔案,時間的依賴,更是支援回調。緩衝技術還被用來實現了頁面緩衝。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。