一分鐘了解互聯(lián)網(wǎng)動(dòng)靜分離架構(gòu)
一、靜態(tài)頁(yè)面
靜態(tài)頁(yè)面,是指互聯(lián)網(wǎng)架構(gòu)中,幾乎不變的頁(yè)面(或者變化頻率很低),例如:
- 首頁(yè)等html頁(yè)面
- js/css等樣式文件
- jpg/apk等資源文件
靜態(tài)頁(yè)面,有與之匹配的技術(shù)架構(gòu)來(lái)加速,例如:
- CDN
- nginx
- squid/varnish
二、動(dòng)態(tài)頁(yè)面
動(dòng)態(tài)頁(yè)面,是指互聯(lián)網(wǎng)架構(gòu)中,不同用戶不同場(chǎng)景訪問(wèn),都不一樣的頁(yè)面,例如:
- 百度搜索結(jié)果頁(yè)
- 淘寶商品列表頁(yè)
- 速運(yùn)個(gè)人訂單中心頁(yè)
這些頁(yè)面,不同用戶,不同場(chǎng)景訪問(wèn),大都會(huì)動(dòng)態(tài)生成不同的頁(yè)面。
動(dòng)態(tài)頁(yè)面,有與之匹配的技術(shù)架構(gòu),例如:
- 分層架構(gòu)
- 服務(wù)化架構(gòu)
- 數(shù)據(jù)庫(kù),緩存架構(gòu)
三、互聯(lián)網(wǎng)動(dòng)靜分離架構(gòu)
動(dòng)靜分離是指,靜態(tài)頁(yè)面與動(dòng)態(tài)頁(yè)面分開(kāi)不同系統(tǒng)訪問(wèn)的架構(gòu)設(shè)計(jì)方法。
一般來(lái)說(shuō):
- 靜態(tài)頁(yè)面訪問(wèn)路徑短,訪問(wèn)速度快,幾毫秒
- 動(dòng)態(tài)頁(yè)面訪問(wèn)路徑長(zhǎng),訪問(wèn)速度相對(duì)較慢(數(shù)據(jù)庫(kù)的訪問(wèn),網(wǎng)絡(luò)傳輸,業(yè)務(wù)邏輯計(jì)算),幾十毫秒甚至幾百毫秒,對(duì)架構(gòu)擴(kuò)展性的要求更高
- 靜態(tài)頁(yè)面與動(dòng)態(tài)頁(yè)面以不同域名區(qū)分
四、頁(yè)面靜態(tài)化
既然靜態(tài)頁(yè)面訪問(wèn)快,動(dòng)態(tài)頁(yè)面生成慢,有沒(méi)有可能,將原本需要?jiǎng)討B(tài)生成的站點(diǎn)提前生成好,使用靜態(tài)頁(yè)面加速技術(shù)來(lái)訪問(wèn)呢?
這就是互聯(lián)網(wǎng)架構(gòu)中的“頁(yè)面靜態(tài)化”優(yōu)化技術(shù)。
舉例,如下圖,58同城的帖子詳情頁(yè),原本是需要?jiǎng)討B(tài)生成的:
- 瀏覽器發(fā)起http請(qǐng)求,訪問(wèn)/detail/12348888x.shtml 詳情頁(yè)
- web-server層從RESTful接口中,解析出帖子id是12348888
- service層通過(guò)DAO層拼裝SQL語(yǔ)句,訪問(wèn)數(shù)據(jù)庫(kù)
- 最終獲取數(shù)據(jù),拼裝html返回瀏覽器
而“頁(yè)面靜態(tài)化”是指,將帖子ID為12348888的帖子12348888x.shtml提前生成好,由靜態(tài)頁(yè)面相關(guān)加速技術(shù)來(lái)加速:
這樣的話,將極大提升訪問(wèn)速度,減少訪問(wèn)時(shí)間,提高用戶體驗(yàn)。
五、頁(yè)面靜態(tài)化的適用場(chǎng)景
頁(yè)面靜態(tài)化優(yōu)化后速度會(huì)加快,那能不能所有的場(chǎng)景都使用這個(gè)優(yōu)化呢?哪些業(yè)務(wù)場(chǎng)景適合使用這個(gè)架構(gòu)優(yōu)化方案呢?
一切脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓,頁(yè)面靜態(tài)化,適用于:總數(shù)據(jù)量不大,生成靜態(tài)頁(yè)面數(shù)量不多的業(yè)務(wù)。例如:
- 58速運(yùn)的城市頁(yè)只有幾百個(gè),就可以用這個(gè)優(yōu)化,只需提前生成幾百個(gè)城市的“靜態(tài)化頁(yè)面”即可
- 一些二手車(chē)業(yè)務(wù),只有幾萬(wàn)量二手車(chē)庫(kù)存,也可以提前生成這幾萬(wàn)量二手車(chē)的靜態(tài)頁(yè)面
- 像58同城這樣的信息模式業(yè)務(wù),有幾十億的帖子量,就不太適合于靜態(tài)化(碎片文件多,反而訪問(wèn)慢)
六、總結(jié)
“頁(yè)面靜態(tài)化”是一種將原本需要?jiǎng)討B(tài)生成的站點(diǎn)提前生成靜態(tài)站點(diǎn)的優(yōu)化技術(shù)。
總數(shù)據(jù)量不大,生成靜態(tài)頁(yè)面數(shù)量不多的業(yè)務(wù),非常適合于“頁(yè)面靜態(tài)化”優(yōu)化。
【本文為51CTO專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】