ASP.NET Caching /2
最後更新:2017-02-28
來源:互聯網
上載者: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還支援檔案,時間的依賴,更是支援回調。緩衝技術還被用來實現了頁面緩衝。