ASP.NET Caching(2)
2024-07-10 12:58:35
供稿:網友
 
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還支持文件,時間的依賴,更是支持回調。緩存技術還被用來實現了頁面緩存。本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。