高性能WEB開發(fā)經(jīng)驗(yàn)分享
首先,無論你是在用什么語言從事web開發(fā),php、asp.net、jsp....(開發(fā)語音只是個(gè)工具而已,不同只是某些更適合做某類程序的開發(fā)),影響用戶體驗(yàn)性重要因素除了:操作性和(頁面)效果外,就是頁面打開速度了。所以,一個(gè)網(wǎng)站的性能對其長期穩(wěn)定的運(yùn)營起著決定性的作用。
51CTO推薦專題:高性能WEB開發(fā)應(yīng)用指南
想提高網(wǎng)站的性能,就必須在各方面去做優(yōu)化,從頁面層的請求優(yōu)化,到數(shù)據(jù)庫層的數(shù)據(jù)緩存優(yōu)化;方法或措施列舉如下:
一.[頁面層]減少請求的數(shù)量,和優(yōu)化請求,可行方法:
1.壓縮頁面及其js、css文件(網(wǎng)上有壓縮js、css文件的工具),或合并請求,可以利用minify工具將多個(gè)js和css文件合并為一個(gè)請求,以減少頁面的請求數(shù)量 ——minify此工具目前使用網(wǎng)站還很少,但我感覺它可能會(huì)在未來幾年被廣泛使用,其優(yōu)點(diǎn)是顯而易見的,對網(wǎng)站優(yōu)化方面感興趣的朋友,建議你了解下。
2.將多個(gè)小圖合并(處理)為一個(gè)大圖;js文件的引用盡量(我建議是***)都放在頁面的底部,避免阻塞頁面其它資源的訪問和加載?!局档谜f明的一點(diǎn)是,兩個(gè)相同地址的圖片,后綴或名稱的大小寫不同,可能會(huì)被瀏覽器當(dāng)作是兩個(gè)不同請求而處理,在此之前我也感覺應(yīng)該是是同一個(gè)請求,但事實(shí)卻不是如此】
如圖:

二.[數(shù)據(jù)庫層]利用緩存,減少對數(shù)據(jù)庫訪問;優(yōu)化數(shù)據(jù)庫和查詢,提高查詢速率,可行方法:
1.數(shù)據(jù)庫設(shè)計(jì)上,【無論是什么軟件,對數(shù)據(jù)庫最頻繁的操作一般都是讀(數(shù)據(jù)查詢)】可采用垂直分割數(shù)據(jù)庫表——如果一個(gè)表的字段比較多(如:10個(gè)以上),可考慮將那些對此表的信息搜索[頻繁讀的字段]放在一個(gè)表中(如:主表),其它的字段放在副表中; 也可采用橫向分割的方法,將數(shù)據(jù)庫或表分區(qū)——這類應(yīng)用,本人正在深入學(xué)習(xí)了解中。
2.優(yōu)化數(shù)據(jù)庫查詢,如提高分頁查詢的效率,減少不必要的數(shù)據(jù)查詢字段放回等。
3.利用現(xiàn)在流行的NoSql技術(shù),像Memcached(分布式數(shù)據(jù)緩存),mongodb...., 這里就不再過多描述,網(wǎng)上有足夠多的資料講解,只是需要提醒的是:這樣技術(shù)都有其使用場景,不要盲目的去用。
三.[概括]動(dòng)靜分開——網(wǎng)頁的靜態(tài)資源css,js,圖片等放在靜態(tài)服務(wù)器上,與網(wǎng)頁分開;讀寫分開——可將數(shù)據(jù)庫根據(jù)操作分為 讀數(shù)據(jù)庫 和 寫數(shù)據(jù)庫,注意的是需要做好數(shù)據(jù)同步!
原文鏈接:http://www.cnblogs.com/know/archive/2011/06/13/2080097.html
【編輯推薦】