|
相信大多數(shù)開發(fā)人員都比較了解緩存了,很多開發(fā)人員都在軟件開發(fā)中使用了預(yù)定義或自定義的緩存,并從中獲得了預(yù)期的應(yīng)用程序的性能提升.這篇和后續(xù)文章將詳細(xì)的介紹與探討.NET體系下的緩存實(shí)現(xiàn)的機(jī)制,并討論它的優(yōu)點(diǎn)與缺點(diǎn).
.NET緩存機(jī)制:使用緩存的實(shí)際價(jià)值
在kevinhoffman,lonnykruger的書中寫到:開發(fā)人員經(jīng)常需要將數(shù)據(jù)(臨時(shí)數(shù)據(jù))臨時(shí)存放到一個(gè)存儲(chǔ)媒體以便快速訪問.這種臨時(shí)數(shù)據(jù)的存儲(chǔ)器叫做緩存.如果開發(fā)人員合理使用緩存,則可以大幅度提高應(yīng)用程序的性能.
上面是一段完美的關(guān)于緩存的定義,就目前而言,迅速而便捷的將數(shù)據(jù)提供給核心處理代碼已成為一個(gè)重要的設(shè)計(jì)要求。,迅速是為了增強(qiáng)用戶體驗(yàn),便捷可以降低系統(tǒng)壓力。而緩存則可以完成任務(wù),雖然不是那么完美。
.NET緩存機(jī)制的共同點(diǎn)
形形色色的緩存機(jī)制幾乎都有以下一些主要共同點(diǎn):
1.提供數(shù)據(jù)臨時(shí)存儲(chǔ),緩存數(shù)據(jù)是否存在具有不確定性。
2.可以設(shè)定緩存優(yōu)先級(jí)。
3.可以制定緩存依賴,依賴過期則緩存數(shù)據(jù)不可用。
4.緩存的核心是MAP
.NET緩存機(jī)制比對(duì)之探討
臨時(shí)緩存VS持久緩存:
其實(shí)從理論上說微軟.NET的緩存解決方案是最完美的緩存的實(shí)現(xiàn),但是正因?yàn)槠浣炭茣降膶?shí)現(xiàn)使得不少程序員們抱怨個(gè)不停。一個(gè)可能存在的悖論是:千辛萬苦獲得的數(shù)據(jù)被塞進(jìn)緩存,因?yàn)橄到y(tǒng)內(nèi)存緊張而被放棄,雖然它是為了緩解壓力而來。這并不是微軟的問題,而是程序員們貪得無厭的胃口和不當(dāng)?shù)氖褂梅绞剿隆?/p>
在很多的開源緩存機(jī)制中都采用的持久緩存的方法來實(shí)現(xiàn),其實(shí)這些與其說是緩存,我覺得更像是一個(gè)增強(qiáng)的session,將緩存的優(yōu)先級(jí),緩存依賴機(jī)制安裝在其上。開發(fā)起來既簡(jiǎn)單又輕松(.NET cache 牽涉了大量底層非托管代碼)。
內(nèi)容緩存VS數(shù)據(jù)緩存:
內(nèi)容緩存不是唯一的選擇,數(shù)據(jù)緩存也不是沒有優(yōu)點(diǎn)。雖然性能上稍有不足,但是把數(shù)據(jù)存放在數(shù)據(jù)庫中卻省去了清理緩存淘寶購物導(dǎo)航的麻煩,。另一個(gè)顯而易見的優(yōu)點(diǎn)是易于負(fù)載分配,尤其是我們擁有一個(gè)怪獸數(shù)據(jù)庫服務(wù)器時(shí)。從實(shí)現(xiàn)技術(shù)上來說,麻煩的多線程問題也可以方便的轉(zhuǎn)嫁。在選擇實(shí)現(xiàn)內(nèi)容緩存還是數(shù)據(jù)緩存,有很多不得不考慮的因素,花落誰家就看所開發(fā)的程序所特殊要求了.
值得重視的依賴:
.NET framework給我們提供了常用的幾個(gè)緩存依賴:時(shí)間,文件,數(shù)據(jù)庫。但是由于微軟一貫的作分,我們無法創(chuàng)建新類型的依賴(SqlCacheDependency功能何其何其之弱…)。企業(yè)庫自定義依賴是個(gè)好主意,我們只需要繼承ICacheItemExpiration接口即可!
NET技術(shù):.NET緩存機(jī)制探討與比對(duì),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。