這篇文章主要介紹“怎么避免ASP.NET緩存占用系統(tǒng)資源”,在日常操作中,相信很多人在怎么避免ASP.NET緩存占用系統(tǒng)資源問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么避免ASP.NET緩存占用系統(tǒng)資源”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
嶺東網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),嶺東網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為嶺東成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的嶺東做網(wǎng)站的公司定做!
ASP.NET緩存概述
ASP.Net支持兩種類(lèi)型的緩存:數(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àn)索,首先清除舊的和很少使用的項(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)單,它只有三種類(lèi)型的失效(時(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),讓?xiě)?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)為它能提高性能。
到此,關(guān)于“怎么避免ASP.NET緩存占用系統(tǒng)資源”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!