組長~~~~~~
資料緩衝技術多長時間能學會啊?
資料緩衝介紹
ASP.NET 提供一個功能完整的緩衝引擎,頁面可使用該引擎通過 HTTP 要求儲存和檢索任意對象。ASP.NET 緩衝對於每個應用程式是私人的並且將Object Storage Service在記憶體中。緩衝的生存期與應用程式的生存期相同,也就是說,當應用程式重新啟動時,將重新建立緩衝。
緩衝提供了簡單的詞典介面,使程式員可以輕鬆地將對象放到緩衝中以及從緩衝中檢索對象。在最簡單的情況下,將某項放到緩衝中就像向詞典中添加一個詞條一樣:
Cache["mykey"] = myValue; Cache("mykey") = myValue Cache("mykey") = myValue; |
C# |
VB |
JScript |
|
檢索資料就是如此簡單:
myValue = Cache["mykey"]; if(myValue != null ) { DisplayData(myValue); } myValue = Cache("mykey") If myValue <> Null Then DisplayData(myValue) End If myValue = Cache("mykey"); if(myValue != null ) { DisplayData(myValue); } |
C# |
VB |
JScript |
|
對於需要更複雜功能的應用程式,ASP.NET 緩衝支援清理、到期、檔案依賴項和鍵依賴項。
- 清理是指當記憶體變得很少時,緩衝嘗試移除不常使用和不太重要的項。希望控制清理如何發生的程式員可以在項插入到緩衝時為清理程式提供提示,指出建立項的相對成本和使項保持有用而必須具有的相對訪問率。
- 到期使程式員得以提供快取項目的生存期,其時間既可以是確切時間(例如,6:00 到期),也可以是相對於項的上次使用的時間(例如,上次訪問項後 20 分鐘到期)。項到期後將從緩衝中被移除,以後若試圖檢索它,將返回空值,除非將它重新插入緩衝。
- 檔案和鍵依賴項允許快取項目的有效性基於外部檔案或其他快取項目。如果依賴項改變,則快取項目失效並從緩衝中被移除。有關如何使用此功能的樣本,請考慮下列方案:應用程式從定期更新的 XML 檔案中讀取財務資訊。應用程式處理檔案中的資料並以可使用的格式建立表示該資料的對象圖形。應用程式緩衝該資料並在從中讀取該資料的檔案上插入依賴項。當更新該檔案時,資料從緩衝中被移除,應用程式可以重新讀取它並重新插入該資料的更新副本。
使用資料緩衝
下面的樣本說明簡單的緩衝使用。該樣本執行資料庫查詢並緩衝結果,並在應用程式的生存期內繼續使用此結果。當運行此樣本時,請注意頁面底部的訊息。當首次被請求時,它指出資料是從資料庫伺服器中顯式檢索的。重新整理頁面後,頁說明使用的是快取複本。
下一個樣本說明依賴於 XML 檔案的快取項目。它與第一個樣本類似,但在此例中是從 XML 資料來源而不是從資料庫伺服器中檢索資料。當快取資料時,XML 檔案被添加為依賴項。
當使用頁面底部的表單添加新記錄時,XML 檔案被更新並且必須重新建立快取項目。
注意:檔案依賴項是通過使用 Cache.Insert 並提供引用 對XML 檔案的 CacheDependency 象添加的。
Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("authors.xml"))); Cache.Insert("MyData", Source, _ New CacheDependency(Server.MapPath("authors.xml"))) Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("authors.xml"))); |
C# |
VB |
JScript |
|
快取項目可以依賴於一個或多個檔案或鍵。如前面提到的,應用程式也可以設定快取項目的到期策略。下列代碼設定絕對的緩衝到期時間。
Cache.Insert("MyData", Source, null, DateTime.Now.AddHours(1), TimeSpan.Zero); Cache.Insert("MyData", Source, null, _ DateTime.Now.AddHours(1), TimeSpan.Zero) Cache.Insert("MyData", Source, null, DateTime.Now.AddHours(1), TimeSpan.Zero); |
C# |
VB |
JScript |
|
相關的參數是對 DateTime.Now.AddHours(1)的調用,DateTime.Now.AddHours(1) 指示該項自插入後一小時到期。最後一個參數 TimeSpan.Zero 表示此項沒有相對到期策略。
下列代碼顯示如何設定相對到期策略。它插入一個項,該項自上次訪問後 20 分鐘到期。注意 DateTime.MaxValue 的使用,它表示此項沒有絕對到期策略。
Cache.Insert("MyData", Source, null, DateTime.MaxValue, TimeSpan.FromMinutes(20)); Cache.Insert("MyData", Source, null, DateTime.MaxValue, _ TimeSpan.FromMinutes(20)) Cache.Insert("MyData", Source, null, DateTime.MaxValue, TimeSpan.FromMinutes(20)); |
C# |
VB |
JScript |
|
本節小結
- 資料緩衝允許以編程方式緩衝任意對象。
- ASP.NET 緩衝支援到期和依賴項。
- 緩衝被限制在應用程式的範圍內,並且它的生存期與應用程式的生存期相同。