自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開(kāi)發(fā) 后端
ASP.NET緩存是什么呢?ASP.NET緩存有什么樣子的特點(diǎn)呢?本文就向你詳細(xì)介紹ASP.NET緩存的相關(guān)情況。

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

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

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

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

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

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

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

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

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

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

根據(jù)請(qǐng)求參數(shù)緩存頁(yè)

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

自動(dòng)移除數(shù)據(jù)

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

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

由于緩存中的項(xiàng)已過(guò)期。

由于項(xiàng)的依賴(lài)項(xiàng)發(fā)生了更改。

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

清理

清理是在內(nèi)存不足時(shí)從緩存中刪除項(xiàng)的過(guò)程。如果某些項(xiàng)在一段時(shí)間內(nèi)未被訪(fǎng)問(wèn),或是在添加到緩存中時(shí)被標(biāo)記為低優(yōu)先級(jí),則這些項(xiàng)會(huì)被移除。ASP.NET 使用 CacheItemPriority 對(duì)象來(lái)確定要首先清理的項(xiàng)。

過(guò)期

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

ASP.NET緩存過(guò)期類(lèi)型

可調(diào)過(guò)期

指定某項(xiàng)自上次被訪(fǎng)問(wèn)后多長(zhǎng)時(shí)間過(guò)期。例如,可以將某項(xiàng)設(shè)置為自上次在緩存中被訪(fǎng)問(wèn)后 20 分鐘過(guò)期。

絕對(duì)過(guò)期

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

依賴(lài)項(xiàng)

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

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

鍵依賴(lài)項(xiàng)

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

文件依賴(lài)項(xiàng)

緩存中的項(xiàng)依賴(lài)于外部文件。如果該文件被修改或刪除,則緩存項(xiàng)也會(huì)被移除。

SQL 依賴(lài)項(xiàng)

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

聚合依賴(lài)項(xiàng)

通過(guò)使用 AggregateCacheDependency 類(lèi)緩存中的項(xiàng)依賴(lài)于多個(gè)元素。如果任何依賴(lài)項(xiàng)發(fā)生更改,該項(xiàng)都會(huì)從緩存中移除。

自定義依賴(lài)項(xiàng)

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

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

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

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

【編輯推薦】

  1. ASP.NET數(shù)據(jù)緩存機(jī)制淺析
  2. ASP.NET數(shù)據(jù)緩存之?dāng)?shù)據(jù)緩存淺談
  3. ASP.NET Request對(duì)象使用實(shí)例淺析
  4. ASP.NET(VB)應(yīng)用之圖片增加水印文字淺析
  5. ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視淺析
責(zé)任編輯:仲衡 來(lái)源: MSDN
相關(guān)推薦

2009-07-29 16:41:45

ASP.NET頁(yè)面框架

2009-08-03 18:35:51

ASP.NET數(shù)據(jù)緩存

2009-08-17 16:59:36

ASP.NET緩存機(jī)制

2009-07-31 09:57:47

ASP.NET數(shù)據(jù)庫(kù)緩

2009-08-25 18:16:02

.NET Framew.NET Framew

2009-07-31 09:47:57

ASP.NET緩存

2009-07-20 16:08:04

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

2009-08-05 15:01:04

ASP.NET應(yīng)用Vi

2009-07-24 11:35:08

2009-10-10 10:44:15

ASP.NET頁(yè)面緩存

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET優(yōu)點(diǎn)

2009-07-30 15:39:55

ASP.NET 2.0

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 18:36:12

ASP.NET Che

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2010-08-06 08:50:21

ASP.NET

2009-07-31 10:23:44

緩存頁(yè)面ASP.NET緩存

2009-07-20 16:23:01

ASP.NET授權(quán)模塊

2009-08-04 17:00:09

ASP.NET禁用Vi
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)