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

如何避免ASP.NET緩存占用系統(tǒng)資源

開(kāi)發(fā) 后端
ASP.Net支持兩種類型的緩存:數(shù)據(jù)緩存和頁(yè)面緩存。本文介紹避免ASP.NET緩存占用系統(tǒng)資源的一些小技巧。

ASP.NET緩存概述

ASP.Net支持兩種類型的緩存:數(shù)據(jù)緩存和頁(yè)面緩存。數(shù)據(jù)緩存允許你保留正常在關(guān)聯(lián)以外的數(shù)據(jù),并在完成頁(yè)面處理后為垃圾收集做好準(zhǔn)備。頁(yè)面緩存允許將頁(yè)面輸出保存在服務(wù)器中,然后從內(nèi)存中恢復(fù)它們,而不是重新進(jìn)行處理。兩種緩存機(jī)制都提供使緩存無(wú)效的功能。

當(dāng)一個(gè)數(shù)據(jù)元素在緩存以外時(shí),你或者可以采用回調(diào)重新生成它,或者在需要它時(shí)查看它是否還在原處,然后再重新生成它。如果緩存無(wú)效,頁(yè)面緩存會(huì)重新對(duì)頁(yè)面進(jìn)行處理。

有效利用緩存的訣竅在于理解它代表的權(quán)衡關(guān)系。緩存使用內(nèi)存,而內(nèi)存是一種相當(dāng)有限的資源。如果內(nèi)存運(yùn)行緩慢,ASP.Net會(huì)清掃緩存。幸運(yùn)的是,在清掃過(guò)程中,你可以設(shè)置優(yōu)先,保留一些項(xiàng)目。如果沒(méi)有這些線索,首先清除舊的和很少使用的項(xiàng)目。

因此,在緩存中存儲(chǔ)許多大型對(duì)象或頁(yè)面可能會(huì)產(chǎn)生負(fù)作用。如果對(duì)象或頁(yè)面在緩存中保存的時(shí)間不夠長(zhǎng),不足以抵消緩存中固有的管理費(fèi)用,那么性能就會(huì)出現(xiàn)凈下滑。

還要認(rèn)識(shí)到,緩存并不常用的數(shù)據(jù)完全是浪費(fèi)系統(tǒng)資源。此外,緩存經(jīng)常需要使其無(wú)效的數(shù)據(jù)(以頁(yè)面視圖百分比,而不是每天的次數(shù)來(lái)測(cè)量)也是一種浪費(fèi)。例如,緩存每小時(shí)顯示三或四次,但每?jī)煞昼娋托枰匦律傻墓善毙星槭珍浧骶褪菍?duì)服務(wù)器內(nèi)存的浪費(fèi)。

ASP.NET緩存的進(jìn)化

ASP.Net緩存也在不斷進(jìn)化。在決定是否使用它時(shí),確定你評(píng)估的是將在應(yīng)用程序上運(yùn)行的同一個(gè)版本的緩存。例如,.Net 1.1 Framework沒(méi)有SQL Server緩存,但.Net 2.0和3.0有SQL Server緩存。確實(shí),.Net 3.0中的緩存相當(dāng)簡(jiǎn)單,它只有三種類型的失效(時(shí)間、文件改變和鍵改變)。

讓SQL Server自動(dòng)使緩存失效也相當(dāng)有趣。在SQL Server 2000中,你需要定期檢查數(shù)據(jù)庫(kù),僅查看是否有一個(gè)表發(fā)生了改變。SQL Server 2005探測(cè)緩存并告訴它失效,它也支持行級(jí)失效。老實(shí)說(shuō),雖然這似乎是一個(gè)非常好并且有用的特性,但它也建立了大量的廠商鎖定。

你***是使用鍵緩存讓你的應(yīng)用程序的應(yīng)用層來(lái)處理緩存。雖然這樣做可能不如行級(jí)改變的自動(dòng)通知那樣迅速有效,但你可以用一個(gè)精心設(shè)計(jì)的數(shù)據(jù)庫(kù)來(lái)達(dá)到幾乎相同的目的:用緩存中的對(duì)象來(lái)保留記錄的主記錄ID(如雇員表的記錄ID),然后把數(shù)據(jù)庫(kù)中那個(gè)主記錄的失效層疊到其它相關(guān)的緩存項(xiàng)目(如那名雇員的薪水冊(cè)數(shù)據(jù))。雖然這樣做可能要付出一定的努力,但你會(huì)獲得回報(bào),讓應(yīng)用程序保持廠商中立。

雖然緩存好像是提高性能的妙方,但你必須謹(jǐn)慎地使用它。如果對(duì)進(jìn)行緩存的數(shù)據(jù)選擇不當(dāng),就可能傷害到你的性能或浪費(fèi)服務(wù)器資源,使得問(wèn)題比以前更加惡化。衡量你的選項(xiàng)并執(zhí)行一些負(fù)載測(cè)試看看緩存是否有用。

***的方法可能是仿造應(yīng)用程序的一個(gè)速成版本;一旦它模擬后端性能后(有意減速以復(fù)制處理時(shí)間),再把它放在一個(gè)現(xiàn)實(shí)的負(fù)載下,看看緩存能否提高性能。

安裝和使用頁(yè)面緩存相當(dāng)方便,至少具有簡(jiǎn)單的失效(時(shí)間、文件)規(guī)則,但試用應(yīng)用程序數(shù)據(jù)緩存和更加高級(jí)的頁(yè)面失效功能可能需要預(yù)先做大量的工作才能生成現(xiàn)有的代碼。應(yīng)用緩存需要提前進(jìn)行規(guī)劃,而不能事后才追悔,認(rèn)為它能提高性能。

【編輯推薦】

  1. .NET緩存機(jī)制探討與比對(duì)
  2. 概述ASP.NET緩存機(jī)制
  3. ASP.NET數(shù)據(jù)緩存之?dāng)?shù)據(jù)緩存淺談
  4. ASP.NET數(shù)據(jù)緩存機(jī)制淺析
  5. ASP.NET頁(yè)面輸出緩存
責(zé)任編輯:yangsai 來(lái)源: Justin James的博客
相關(guān)推薦

2009-07-31 10:23:44

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

2009-08-04 15:22:33

ASP.NET緩存機(jī)制

2009-07-29 14:35:34

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

2009-07-31 10:33:54

ASP.NET頁(yè)面輸出

2009-07-29 10:35:51

ASP.NET緩存

2009-07-29 16:15:03

asp.net在線學(xué)習(xí)

2009-07-27 16:37:42

ASP.NET主機(jī)

2009-07-29 15:34:13

2009-05-11 13:48:00

ASP.NET 2.0緩存效率

2009-08-17 16:59:36

ASP.NET緩存機(jī)制

2009-08-03 18:35:51

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

2009-08-03 18:47:12

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

2009-07-31 09:47:57

ASP.NET緩存

2009-08-17 17:36:57

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

2009-07-29 15:38:01

2011-10-19 09:41:15

ASP.NET性能優(yōu)化

2009-07-31 09:57:47

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

2009-11-09 08:53:21

ASP.NET緩存

2009-07-22 17:45:35

ASP.NET教程

2009-09-21 09:51:19

LoadRunnerLinux系統(tǒng)監(jiān)控Linux
點(diǎn)贊
收藏

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