再談ASP.NET緩存機(jī)制:開發(fā)效率與優(yōu)化的平衡
不使用ASP.NET緩存機(jī)制的情況
上回說到了Memcached的性能問題,的確,緩存不是***的,但沒有緩存是萬萬不能的?還真有這么干的. PlentyofFish就是這樣做的, 它也是互聯(lián)網(wǎng)上巨頭中為數(shù)不多的采用WISC(Windows + IIS + Sql server + C#)架構(gòu)的網(wǎng)站, MS不能老拿MySpace說事, 現(xiàn)在當(dāng)然不會(huì)放過這個(gè)機(jī)會(huì)大肆宣傳, 但是諷刺的是人家根本不用那些“看起來很美”的服務(wù)器控件,與其說是使用了.Net技術(shù)不如說是借用了這個(gè)平臺(tái)而已. 他們的頁面輸出絕大多數(shù)都是使用構(gòu)造字符串要不就是Response.Write出來的,簡單即是美,他們在寫程序的時(shí)候即是嚴(yán)格遵守這個(gè)規(guī)則,反過來想想CommunityServer里面多達(dá)7層的繼承關(guān)系的控件, 它看起來有點(diǎn)象是這個(gè)樣子:(基本的)(網(wǎng)頁的)(模版化的)(相冊基本模版化的)(相冊模版化的)(相冊可更換風(fēng)格的)XXX控件,瞧這一長串定語,它在每一層繼承里面都實(shí)現(xiàn)了不同的特性, 結(jié)構(gòu)其實(shí)還是蠻清晰的, POF有點(diǎn)象什么呢,手工打造的奧迪,性能沒的說,就是麻煩點(diǎn)。那些B4 Discuz!NT的朋友是不是應(yīng)該反思一下了呢:)
話說回來, 這并不意味著那堆微軟件挖空心思弄出來的Control就沒有用了, 但對于中小應(yīng)用來說我們更需要的是開發(fā)效率,再說負(fù)載量達(dá)不那么大,有過度優(yōu)化之嫌, 合適的就是***的,能快速弄出讓用戶滿意的東西才是最重要的。
ASP.NET緩存機(jī)制以外,其他值得注意的地方
我們來看看它里面的一些值得玩味的地方吧:
1. ***的照片請求都是由他們的服務(wù)器來完成處理的,但是它們都被緩存在內(nèi)存中,并且大小都在2KB以下.
3. 使用Gzip技術(shù)雖然增加了30%的CPU開銷但從節(jié)省的帶寬情況來看是值得的.
4. 沒有使用Asp.Net的緩存機(jī)制,因?yàn)閿?shù)據(jù)更新太快了, 一旦它進(jìn)入緩存就過期了.
5. 大量使用 if,else 或者 while + Response.Write這樣的簡單語句來實(shí)現(xiàn)功能.
6. 負(fù)載均衡(好象沒有誰不用的)
每天3千萬的頁面訪問量,服務(wù)器只有2 個(gè)WebServer + 3個(gè)DB Server,優(yōu)化功夫?qū)嵲谑橇说?
以上就對ASP.NET緩存機(jī)制進(jìn)行了深一步的探討:開發(fā)效率與性能優(yōu)化,應(yīng)該尋找一個(gè)合適的平衡。
本文來自沙加的博客:《.Net下的分布式緩存(3)--如果我們沒有緩存會(huì)怎么樣》
【編輯推薦】