国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

(轉(zhuǎn))ASP.NET緩存概念及其應(yīng)用淺析

2019-11-14 16:15:45
字體:
供稿:網(wǎng)友

asp.net緩存概念及其應(yīng)用淺析

ASP.NET緩存是什么呢?ASP.NET緩存有什么樣子的特點呢?本文就向你詳細介紹ASP.NET緩存的相關(guān)情況。

 

 

ASP.NET緩存概念是什么呢?通常,應(yīng)用程序可以將那些頻繁訪問的數(shù)據(jù),以及那些需要大量處理時間來創(chuàng)建的數(shù)據(jù)存儲在內(nèi)存中,從而提高性能。例如,如果應(yīng)用程序使用復(fù)雜的邏輯來處理大量數(shù)據(jù),然后再將數(shù)據(jù)作為用戶頻繁訪問的報表返回,避免在用戶每次請求數(shù)據(jù)時重新創(chuàng)建報表可以提高效率。同樣,如果應(yīng)用程序包含一個處理復(fù)雜數(shù)據(jù)但不需要經(jīng)常更新的頁,則在每次請求時服務(wù)器都重新創(chuàng)建該頁會使工作效率低下。

在這些情況下,了解了ASP.NET緩存概念之后,為了幫助您提高應(yīng)用程序的性能,ASP.NET緩存使用兩種基本的緩存機制來提供緩存功能。第一種機制是應(yīng)用程序緩存,它允許您緩存所生成的數(shù)據(jù),如 DataSet 或自定義報表業(yè)務(wù)對象。第二種機制是頁輸出緩存,它保存頁處理輸出,并在用戶再次請求該頁時,重用所保存的輸出,而不是再次處理該頁。

ASP.NET緩存應(yīng)用程序

應(yīng)用程序緩存提供了一種編程方式,可通過鍵/值對將任意數(shù)據(jù)存儲在內(nèi)存中。使用應(yīng)用程序緩存與使用應(yīng)用程序狀態(tài)類似。但是,與應(yīng)用程序狀態(tài)不同的是,應(yīng)用程序緩存中的數(shù)據(jù)是易失的,即數(shù)據(jù)并不是在整個應(yīng)用程序生命周期中都存儲在內(nèi)存中。使用應(yīng)用程序緩存的優(yōu)點是由 ASP.NET 管理緩存,它會在項過期、無效、或內(nèi)存不足時移除緩存中的項。還可以配置應(yīng)用程序緩存,以便在移除項時通知應(yīng)用程序。有關(guān)更多信息,請參見 緩存應(yīng)用程序數(shù)據(jù)。

使用應(yīng)用程序緩存的模式是,確定在訪問某一項時該項是否存在于緩存中,如果存在,則使用。如果該項不存在,則可以重新創(chuàng)建該項,然后將其放回緩存中。這一模式可確保緩存中始終有最新的數(shù)據(jù)。

ASP.NET緩存應(yīng)用之頁輸出

頁輸出緩存在內(nèi)存中存儲處理后的 ASP.NET 頁的內(nèi)容。這一機制允許 ASP.NET 向客戶端發(fā)送頁響應(yīng),而不必再次經(jīng)過頁處理生命周期。頁輸出緩存對于那些不經(jīng)常更改,但需要大量處理才能創(chuàng)建的頁特別有用。例如,如果創(chuàng)建大通信量的網(wǎng)頁來顯示不需要頻繁更新的數(shù)據(jù),頁輸出緩存則可以極大地提高該頁的性能。可以分別為每個頁配置頁緩存,也可以在 Web.config 文件中創(chuàng)建緩存配置文件。利用緩存配置文件,只定義一次緩存設(shè)置就可以在多個頁中使用這些設(shè)置。

頁輸出緩存提供了兩種頁緩存模型:整頁緩存和部分頁緩存。整頁緩存允許將頁的全部內(nèi)容保存在內(nèi)存中,并用于完成客戶端請求。部分頁緩存允許緩存頁的部分內(nèi)容,其他部分則為動態(tài)內(nèi)容。

部分頁緩存可采用兩種工作方式:控件緩存和緩存后替換。控件緩存有時也稱為分段緩存,這種方式允許將信息包含在一個用戶控件內(nèi),然后將該用戶控件標(biāo)記為可緩存的,以此來緩存頁輸出的部分內(nèi)容。這一方式可緩存頁中的特定內(nèi)容,并不緩存整個頁,因此每次都需重新創(chuàng)建整個頁。例如,如果要創(chuàng)建一個顯示大量動態(tài)內(nèi)容(如股票信息)的頁,其中有些部分為靜態(tài)內(nèi)容(如每周總結(jié)),這時可以將靜態(tài)部分放在用戶控件中,并允許緩存這些內(nèi)容。

緩存后替換與控件緩存正好相反。這種方式緩存整個頁,但頁中的各段都是動態(tài)的。例如,如果要創(chuàng)建一個在規(guī)定時間段內(nèi)為靜態(tài)的頁,則可以將整個頁設(shè)置為進行緩存。如果向頁添加一個顯示用戶名的 Label 控件,則對于每次頁刷新和每個用戶而言,Label 的內(nèi)容都將保持不變,始終顯示緩存該頁之前請求該頁的用戶的姓名。但是,使用緩存后替換機制,可以將頁配置為進行緩存,但將頁的個別部分標(biāo)記為不可緩存。在此情況下,可以向不可緩存部分添加 Label 控件,這樣將為每個用戶和每次頁請求動態(tài)創(chuàng)建這些控件。

根據(jù)請求參數(shù)緩存頁

除緩存頁的單一版本外,ASP.NET 頁輸出緩存還提供了一些功能,可以創(chuàng)建根據(jù)請求參數(shù)的不同而不同的頁的多個版本。

自動移除數(shù)據(jù)

出于以下原因之一,ASP.NET 可以從緩存中移除數(shù)據(jù):

由于服務(wù)器上的內(nèi)存不足,開始一個稱為“清理”的過程。

由于緩存中的項已過期。

由于項的依賴項發(fā)生了更改。

為了幫助管理緩存項,在將項從緩存中移除時,ASP.NET 會通知應(yīng)用程序。

清理

清理是在內(nèi)存不足時從緩存中刪除項的過程。如果某些項在一段時間內(nèi)未被訪問,或是在添加到緩存中時被標(biāo)記為低優(yōu)先級,則這些項會被移除。ASP.NET 使用 CacheItemPRiority 對象來確定要首先清理的項。

過期

除了清理外,在緩存項過期時,ASP.NET 會自動從緩存中移除這些項。向緩存添加項時,可以按下表中的描述設(shè)置其過期時間。

ASP.NET緩存過期類型

可調(diào)過期

指定某項自上次被訪問后多長時間過期。例如,可以將某項設(shè)置為自上次在緩存中被訪問后 20 分鐘過期。

絕對過期

指定某項在設(shè)定的時間過期,而不考慮訪問頻率。例如,可以將某項設(shè)置為在 6:00 PM 過期,或四小時后過期。

依賴項

可以將緩存中某一項的生存期配置為依賴于其他應(yīng)用程序元素,如某個文件或數(shù)據(jù)庫。當(dāng)緩存項依賴的元素更改時,ASP.NET 將從緩存中移除該項。例如,如果您的網(wǎng)站顯示一份報告,該報告是應(yīng)用程序通過 xml 文件創(chuàng)建的,您可以將該報告放置在緩存中,并將其配置為依賴于該 XML 文件。當(dāng) XML 文件更改時,ASP.NET會從緩存中移除該報告。當(dāng)代碼請求該報告時,代碼會先確定該報告是否在緩存中,如果不在,代碼會重新創(chuàng)建該報告。因此,始終都有最新版本的報告可用。

對于ASP.NET 緩存應(yīng)用,它支持下列描述的依賴項:

鍵依賴項

應(yīng)用程序緩存中的項存儲在鍵/值對中。鍵依賴項允許項依賴于應(yīng)用程序緩存中另一項的鍵。如果移除了原始項,則具有鍵依賴關(guān)系的項也會被移除。例如,可以添加一個名為 ReportsValid 的緩存項,然后緩存若干個依賴于 ReportsValid 鍵的報告。當(dāng) ReportsValid 項被移除時,所有依賴于它的緩存報告同樣也會從緩存中移除。

文件依賴項

緩存中的項依賴于外部文件。如果該文件被修改或刪除,則緩存項也會被移除。

SQL 依賴項

緩存中的項依賴于 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 數(shù)據(jù)庫中表的更改。對于 SQL Server 2005,緩存中的項可依賴于表中的某一行。

聚合依賴項

通過使用 AggregateCacheDependency 類緩存中的項依賴于多個元素。如果任何依賴項發(fā)生更改,該項都會從緩存中移除。

自定義依賴項

可以用您自己的代碼創(chuàng)建的依賴關(guān)系來配置緩存中的項。例如,可以創(chuàng)建一個自定義 Web 服務(wù)緩存依賴項,當(dāng)調(diào)用 Web 服務(wù)得到一個特定值時,該依賴項就會從緩存中移除數(shù)據(jù)。

ASP.NET緩存應(yīng)用程序項移除通知

當(dāng)項從應(yīng)用程序緩存中移除時,您可以收到通知。例如,如果有一個需要大量處理時間才能創(chuàng)建的項,當(dāng)從緩存中移除該項時,您會收到通知以便可以立即替換該項。這樣,下次請求該項時,用戶便不必等待處理該項。

ASP.NET緩存概念以及ASP.NET緩存應(yīng)用的相關(guān)信息就向你介紹到這里,希望通過以上的敘述使你對什么是ASP.NET緩存概念,以及ASP.NET緩存應(yīng)用有所了解。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 忻城县| 秦皇岛市| 蒙阴县| 长顺县| 韶关市| 游戏| 宁南县| 通城县| 富源县| 阿巴嘎旗| 湖口县| 定结县| 贵港市| 大邑县| 邻水| 安宁市| 缙云县| 无极县| 东平县| 大荔县| 宜君县| 伊川县| 陕西省| 阿拉善右旗| 吉安市| 洛扎县| 澎湖县| 泗洪县| 电白县| 专栏| 新津县| 永康市| 抚顺县| 平山县| 三原县| 响水县| 惠来县| 尼木县| 克拉玛依市| 通榆县| 泸水县|