關(guān)于中大型開(kāi)發(fā)b/s開(kāi)發(fā)中的緩存(cache),我的一些看法,有不正確的或者是有筆誤的地方,請(qǐng)指正。thanks
首先,應(yīng)該了解基本的,對(duì)于緩存的知識(shí):
Q:如:靜態(tài)緩存和動(dòng)態(tài)緩存的區(qū)別?緩存是什么?
A:緩存,在某個(gè)方面簡(jiǎn)單的說(shuō),就是無(wú)需與數(shù)據(jù)庫(kù)再次交互.
靜態(tài)緩存: 即所說(shuō)的html,shtml文件。
動(dòng)態(tài)緩存:即所說(shuō)的把緩存存于服務(wù)器的內(nèi)存中,需要時(shí)調(diào)用。
他們的區(qū)別在哪呢?
靜態(tài)緩存不用占用負(fù)載(服務(wù)器的內(nèi)存),但需要占用服務(wù)器的空間(因?yàn)樯珊芏辔募钪匾,是因(yàn)樯闪遂o態(tài)的緩存,而不利于維護(hù),因?yàn)楫?dāng)你設(shè)計(jì)一個(gè)系統(tǒng)的時(shí)候,你必須考慮到用這個(gè)的后果,應(yīng)該就像設(shè)計(jì)模式中所說(shuō)的,有的模式是靈活的,而有的模式是一開(kāi)始布署的時(shí)候就不變了的。
因此,重申一次,設(shè)計(jì)時(shí)需要小心?紤]盡可能多的東西,如:系統(tǒng)升級(jí)后,是否還適用(盡可能的想),是否有利于更換模板,為一些頁(yè)面添加特殊的或特定的代碼,用shtml還是html?等等。
而動(dòng)態(tài)的cache,我想大家都應(yīng)該知道動(dòng)網(wǎng)“迷城浪子”寫的用application做為cache的class了,這是asp中比較經(jīng)典的用動(dòng)態(tài)cache的例子。因此我也不用說(shuō)太多過(guò)于application的cache了。他的優(yōu)點(diǎn)就在于,較靜態(tài)的cache利于維護(hù)和升級(jí)。以下是靜態(tài)緩存與動(dòng)態(tài)緩存示意圖:
A: 何時(shí)使用靜態(tài)緩存和動(dòng)態(tài)緩存呢?
Q:這個(gè)要看具體,你是如何布署服務(wù)器,以及,你是怎么樣設(shè)計(jì)你的程序與代碼的 舉個(gè)例子:
我的服務(wù)器負(fù)載量夠大,無(wú)需考慮內(nèi)存這里問(wèn)題,那么你可以較多的使用動(dòng)態(tài)的cache,如新聞的索引頁(yè)、首頁(yè)、更多的索引頁(yè)。而不必再生成靜態(tài)的。如動(dòng)易以前的版本(現(xiàn)在的版本我是很清楚,現(xiàn)在的好像是采用了靜態(tài)的緩存)廣泛采用動(dòng)態(tài)的緩存技術(shù)。因此在后臺(tái)更新時(shí),需要手動(dòng)更新cache,當(dāng)然這里就可以采用URL rewrite了,更利于Search Engine的收錄。提醒一句,這一點(diǎn)也蠻重要的,也是提醒很多的個(gè)人架設(shè)服務(wù)器的朋友,Search Engine并不是非常的友好的 (通常Search Engine的robot在收錄的網(wǎng)站的過(guò)程中。會(huì)一直在爬你的網(wǎng)站,因此,做一個(gè)流量訪問(wèn)的系統(tǒng)還是很有必要的,記得cnblog(博客園)的dodo在檢測(cè)中發(fā)現(xiàn)yahoo的robot每分鐘爬的次數(shù)是google的幾倍,這對(duì)你的網(wǎng)站速度是某個(gè)方面是有影響的,有的時(shí)候還很大)
而靜態(tài)的緩存呢,上面也說(shuō)到了,不利于維護(hù)。但廣泛采用的MVC開(kāi)發(fā)方式,把頁(yè)面與程序很好的分離開(kāi)來(lái)的話,是可以更快的提高,如我下面的圖所示:
Q: 還有其它的方式來(lái)布署嗎?
A: 有。如下所示。采用Proxy的技術(shù)來(lái)設(shè)計(jì),通過(guò)代碼獲得靜態(tài)cache是否可用,如果可用的話,如果不可用(這里所說(shuō)的不可用,即是cache不存在,或者已經(jīng)改動(dòng)過(guò)cache了),則重新生成輸出,否則的話,直接輸出。
采用動(dòng)態(tài)cache和靜態(tài)cache的完整示意圖,用消息通訊。簡(jiǎn)單的說(shuō)明了如何應(yīng)用cache的布署和應(yīng)用。當(dāng)然可以不用Cache Proxy來(lái)判斷的,去掉cacheproxy也是一樣的。
出處:never-online
責(zé)任編輯:moby
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|