久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ASP.NET 2.0的緩存技術(shù)簡(jiǎn)介

 靜心怡苑LM 2012-09-25

  由數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用程序,,如果需要改善其性能,,最好的方法是使用緩存功能,。用戶從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù),可能是Web應(yīng)用程序中執(zhí)行最慢的操作之一,。因?yàn)槠渲猩婕岸鄠€(gè)環(huán)節(jié),,例如,Web服務(wù)器,、數(shù)據(jù)庫(kù)服務(wù)器等,。尤其是在用戶比較多,檢索的數(shù)據(jù)量比較大的情況下,,會(huì)給包括用戶在內(nèi)的各個(gè)方面造成不小的困難,。如果能夠?qū)?shù)據(jù)庫(kù)中的數(shù)據(jù)緩存到內(nèi)存(也可以存儲(chǔ)在其他場(chǎng)所),則無(wú)需在請(qǐng)求每個(gè)頁(yè)面時(shí)都訪問(wèn)數(shù)據(jù)庫(kù),。由于從內(nèi)存中返回?cái)?shù)據(jù)的速度始終比新提供的數(shù)據(jù)速度快,,因而可以大大提供應(yīng)用程序的性能。

  緩存有一個(gè)不太容易克服的缺點(diǎn),,那就是數(shù)據(jù)過(guò)期的問(wèn)題。最典型的情況是,,如果將數(shù)據(jù)庫(kù)表中的數(shù)據(jù)內(nèi)容緩存到服務(wù)器內(nèi)存中,,當(dāng)數(shù)據(jù)庫(kù)表中的記錄發(fā)生更改時(shí),Web應(yīng)用程序則很可能顯示過(guò)期的,、不準(zhǔn)確的數(shù)據(jù),。對(duì)于某些類型的數(shù)據(jù),即使顯示的信息過(guò)期,,影響也不會(huì)很大,。然而,對(duì)于實(shí)時(shí)性要求比較嚴(yán)格的數(shù)據(jù),,例如,,股票價(jià)格、拍賣出價(jià)之類信息,,顯示的數(shù)據(jù)稍有過(guò)期都是不可接受的,。

  為了解決以上問(wèn)題,ASP.NET 1.x中曾經(jīng)提供了一些比較好的緩存功能,,例如,,頁(yè)面輸出緩存、部分緩存,、頁(yè)面數(shù)據(jù)緩存等,。雖然這些緩存功能可以解決數(shù)據(jù)緩存方面的問(wèn)題,但還是存在較大的缺點(diǎn),,開(kāi)發(fā)人員必須在性能和數(shù)據(jù)過(guò)期之間作出權(quán)衡,,數(shù)據(jù)過(guò)期的問(wèn)題始終困擾著開(kāi)發(fā)人員,。例如,如果數(shù)據(jù)庫(kù)表中的數(shù)據(jù)發(fā)生了變化,,緩存則也許不能在指定的時(shí)間內(nèi)更新,,而必須等到緩存過(guò)期,那么就有可能為用戶帶來(lái)一定的麻煩,。理想的情況是,,數(shù)據(jù)庫(kù)表中的任何更新,都能夠立刻體現(xiàn)在緩存數(shù)據(jù)中,,ASP.NET 2.0克服了以上不足,,解決了這個(gè)問(wèn)題。ASP.NET 2.0的緩存功能是在ASP.NET 1.x基礎(chǔ)之上擴(kuò)展而來(lái)的,。

  ASP.NET 2.0支持以下幾種緩存

  ·頁(yè)面輸出緩存

  頁(yè)面輸出緩存是最為簡(jiǎn)單的緩存機(jī)制,,該機(jī)制將整個(gè)ASP.NET頁(yè)面內(nèi)容保存在服務(wù)器內(nèi)存中。當(dāng)用戶請(qǐng)求該頁(yè)面時(shí),,系統(tǒng)從內(nèi)存中輸出相關(guān)數(shù)據(jù),,直到緩存數(shù)據(jù)過(guò)期。在這個(gè)過(guò)程中,,緩存內(nèi)容直接發(fā)送給用戶,,而不必再次經(jīng)過(guò)頁(yè)面處理生命周期。通常情況下,,頁(yè)面輸出緩存對(duì)于那些包含不需要經(jīng)常修改內(nèi)容的,,但需要大量處理才能編譯完成的頁(yè)面特別有用。需要讀者注意的是,,頁(yè)面輸出緩存是將頁(yè)面全部?jī)?nèi)容都保存在內(nèi)存中,,并用于完成客戶端請(qǐng)求。

  ·頁(yè)面部分緩存

  顧名思義,,頁(yè)面部分緩存是將頁(yè)面部分內(nèi)容保存在內(nèi)存中以便響應(yīng)用戶請(qǐng)求,,而頁(yè)面其他部分內(nèi)容則為動(dòng)態(tài)內(nèi)容。頁(yè)面部分緩存的實(shí)現(xiàn)包括兩種方式:控件緩存和替換后緩存,。前者也可稱為片段緩存,,這種方式允許將需要緩存的信息包含在一個(gè)用戶控件內(nèi),然后,,將該用戶控件標(biāo)記為可緩存的,,以此來(lái)緩存頁(yè)面輸出的部分內(nèi)容。這一方式緩存了頁(yè)面中的特定內(nèi)容,,而沒(mé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)部分放在用戶控件中,,并允許緩存這些內(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è)顯示用戶名的Label控件,則對(duì)于每次頁(yè)刷新和每個(gè)用戶而言,,Label的內(nèi)容都將保持不變,,始終顯示緩存該頁(yè)之前請(qǐng)求該頁(yè)的用戶的姓名。使用緩存后替換機(jī)制,,可以將頁(yè)配置為進(jìn)行緩存,,將頁(yè)的個(gè)別部分標(biāo)記為不可緩存。在此情況下,,可以向不可緩存部分添加Label控件,,這樣將為每個(gè)用戶和每次頁(yè)請(qǐng)求動(dòng)態(tài)創(chuàng)建這些控件。

  ·應(yīng)用程序數(shù)據(jù)緩存

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

  ·緩存依賴

  ASP.NET 1.x已經(jīng)提供了一些基于時(shí)間、文件,、目錄等緩存依賴功能,。這些功能雖然能夠處理一些常見(jiàn)問(wèn)題,但是無(wú)法解決數(shù)據(jù)過(guò)期的難題,。為此,,ASP.NET 2.0新增了SQL數(shù)據(jù)緩存依賴功能,。該功能的核心是SqlCacheDependency類。不同版本的SQL Server,,其對(duì)于SQL數(shù)據(jù)緩存依賴具有不同程度的支持,,因此,使用方法差異較大,。另外,,ASP.NET 2.0還支持以CacheDependency類為核心的自定義緩存依賴,以及以AggregateCacheDependency類為核心的聚合緩存依賴等,。

  ASP.NET 2.0包括了一些有助于進(jìn)行緩存配置的新功能,。例如,允許使用Web.config文件來(lái)創(chuàng)建緩存設(shè)置,。在Web.config文件中進(jìn)行適當(dāng)設(shè)置,,并在單個(gè)頁(yè)中引用這些設(shè)置后,就能夠?qū)⒕彺嬖O(shè)置同時(shí)應(yīng)用于多個(gè)頁(yè)面,。同時(shí),,緩存設(shè)置還添加了更多用于自定義緩存性能的選項(xiàng)。

  以上簡(jiǎn)單介紹了ASP.NET 2.0提供的緩存功能,,它們能夠提高請(qǐng)求響應(yīng)的吞吐量以便提高應(yīng)用程序性能,。實(shí)際上,這些緩存功能有的繼承自ASP.NET 1.x,,并且得到了增強(qiáng),,有的則是新增功能。增強(qiáng)功能包括功能更強(qiáng)大的頁(yè)面部分緩存模型,、增強(qiáng)的緩存配置以及輸出緩存指令的改進(jìn),。新功能包括Web.config緩存配置支持、自定義緩存依賴,、聚合緩存依賴,、SQL數(shù)據(jù)緩存依賴以及緩存后替換等。

  在正式開(kāi)始介紹以上各個(gè)緩存功能之前,,還有兩個(gè)概念需要了解,。一個(gè)是緩存清除,另一個(gè)是緩存過(guò)期,。

  緩存清除是指從內(nèi)存中移除緩存數(shù)據(jù),。可能由以下3個(gè)原因造成:一是緩存項(xiàng)數(shù)據(jù)過(guò)期,。每個(gè)過(guò)期的緩存項(xiàng)數(shù)據(jù)都必須被刪除,,否則導(dǎo)致服務(wù)器內(nèi)存不足,影響其他應(yīng)用程序執(zhí)行。二是緩存依賴項(xiàng)發(fā)生改變,。依賴項(xiàng)與數(shù)據(jù)緩存項(xiàng)有著密切關(guān)系,。根據(jù)應(yīng)用程序設(shè)置,如果依賴項(xiàng)發(fā)生改變,,那么數(shù)據(jù)緩存很可能會(huì)被清除,。三是由于服務(wù)器內(nèi)存不足,開(kāi)始緩存清理過(guò)程,。如果某些項(xiàng)在一段時(shí)間內(nèi)未被訪問(wèn),,或是在添加到緩存中時(shí)被標(biāo)記為低優(yōu)先級(jí),則這些項(xiàng)會(huì)被移除,。

  以上介紹了緩存清除的概念和形成原因,,其中涉及一個(gè)數(shù)據(jù)過(guò)期的問(wèn)題。在ASP.NET 2.0中,,當(dāng)向緩存添加項(xiàng)時(shí),,可以設(shè)置兩種數(shù)據(jù)過(guò)期類型。一種稱為可調(diào)過(guò)期,,即指定某項(xiàng)自上次被訪問(wèn)后多長(zhǎng)時(shí)間過(guò)期,。例如,可以將某項(xiàng)設(shè)置為自上次在緩存中被訪問(wèn)后20分鐘過(guò)期,。另一種是絕對(duì)過(guò)期,,即指定某項(xiàng)在設(shè)定的時(shí)間過(guò)期,而不考慮訪問(wèn)頻率,。例如,,可以將某項(xiàng)設(shè)置為在下午6點(diǎn)過(guò)期,或4小時(shí)后過(guò)期,。

  ASP.NET 2.0的緩存功能具有以下優(yōu)點(diǎn):

  ·支持更為廣泛和靈活的可開(kāi)發(fā)特征

  ASP.NET 2.0包含一些新增的緩存控件和API,。例如,自定義緩存依賴,、Substitution控件、頁(yè)面輸出緩存API等,,這些特征能夠明顯改善開(kāi)發(fā)人員對(duì)于緩存功能的控制,。

  ·增強(qiáng)的可管理性

  使用ASP.NET 2.0提供的配置和管理功能,可以更加輕松地管理緩存功能,。

  ·提供更高的性能和可伸縮性

  ASP.NET 2.0提供了一些新的功能,,例如,SQL數(shù)據(jù)緩存依賴等,,這些功能將幫助開(kāi)發(fā)人員創(chuàng)建高性能,、伸縮性強(qiáng)的Web應(yīng)用程序。

  另外,緩存功能也有其自身的不足,。例如,,顯示的內(nèi)容可能不是最新、最準(zhǔn)確的,,為此,,必須設(shè)置合適的緩存策略。又如,,緩存增加了系統(tǒng)的復(fù)雜性并使其難于測(cè)試和調(diào)試,,因此建議在沒(méi)有緩存的情況下開(kāi)發(fā)和測(cè)試應(yīng)用程序,然后在性能優(yōu)化階段啟用緩存選項(xiàng),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多