網際網路動靜分離架構

無痕幽雨發表於2018-05-18

網際網路動靜分離架構


一、靜態頁面

靜態頁面,是指網際網路架構中,幾乎不變的頁面(或者變化頻率很低),例如:

  • 首頁等html頁面

  • js/css等樣式檔案

  • jpg/apk等資原始檔


靜態頁面,有與之匹配的技術架構來加速,例如:

  • CDN

  • nginx

  • squid/varnish


二、動態頁面

動態頁面,是指網際網路架構中,不同使用者不同場景訪問,都不一樣的頁面,例如:

  • 百度搜尋結果頁

  • 淘寶商品列表頁

  • 速運個人訂單中心頁

這些頁面,不同使用者,不同場景訪問,大都會動態生成不同的頁面。


動態頁面,有與之匹配的技術架構,例如:

  • 分層架構

  • 服務化架構

  • 資料庫,快取架構

 

三、網際網路動靜分離架構

動靜分離是指,靜態頁面與動態頁面分開不同系統訪問的架構設計方法。


一般來說:

  • 靜態頁面訪問路徑短,訪問速度快,幾毫秒

  • 動態頁面訪問路徑長,訪問速度相對較慢(資料庫的訪問,網路傳輸,業務邏輯計算),幾十毫秒甚至幾百毫秒,對架構擴充套件性的要求更高

  • 靜態頁面與動態頁面以不同域名區分

 

四、頁面靜態化

既然靜態頁面訪問快,動態頁面生成慢,有沒有可能,將原本需要動態生成的站點提前生成好,使用靜態頁面加速技術來訪問呢?

這就是網際網路架構中的“頁面靜態化”優化技術。


舉例,如下圖,58同城的帖子詳情頁,原本是需要動態生成的:


  • 瀏覽器發起http請求,訪問/detail/12348888x.shtml 詳情頁

  • web-server層從RESTful介面中,解析出帖子id是12348888

  • service層通過DAO層拼裝SQL語句,訪問資料庫

  • 最終獲取資料,拼裝html返回瀏覽器


而“頁面靜態化”是指,將帖子ID為12348888的帖子12348888x.shtml提前生成好,由靜態頁面相關加速技術來加速:


這樣的話,將極大提升訪問速度,減少訪問時間,提高使用者體驗。

 

五、頁面靜態化的適用場景

頁面靜態化優化後速度會加快,那能不能所有的場景都使用這個優化呢?哪些業務場景適合使用這個架構優化方案呢?

 

一切脫離業務的架構設計都是耍流氓,頁面靜態化,適用於:總資料量不大,生成靜態頁面數量不多的業務例如:

  • 58速運的城市頁只有幾百個,就可以用這個優化,只需提前生成幾百個城市的“靜態化頁面”即可

  • 一些二手車業務,只有幾萬量二手車庫存,也可以提前生成這幾萬量二手車的靜態頁面

  • 像58同城這樣的資訊模式業務,有幾十億的帖子量,就太適合於靜態化(碎片檔案多,反而訪問慢)

 

六、總結

“頁面靜態化”是一種將原本需要動態生成的站點提前生成靜態站點的優化技術。

總資料量不大,生成靜態頁面數量不多的業務,非常適合於“頁面靜態化”優化。


一分鐘不長,希望邏輯清晰,希望大夥有收穫。

哈。



相關文章