一分鐘瞭解互聯網動靜分離架構

本文轉載自架構師之路css

1、靜態頁面html

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

  • 首頁等html頁面
  • js/css等樣式文件
  • jpg/apk等資源文件

img

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

  • CDN
  • nginx
  • squid/varnish

2、動態頁面數據庫

動態頁面,是指互聯網架構中,不一樣用戶不一樣場景訪問,都不同的頁面,例如:瀏覽器

  • 百度搜索結果頁
  • 淘寶商品列表頁
  • 速運我的訂單中心頁

這些頁面,不一樣用戶,不一樣場景訪問,大都會動態生成不一樣的頁面。緩存

img

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

  • 分層架構
  • 服務化架構
  • 數據庫,緩存架構

3、互聯網動靜分離架構架構

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

img

通常來講:

  • 靜態頁面訪問路徑短,訪問速度快,幾毫秒
  • 動態頁面訪問路徑長,訪問速度相對較慢(數據庫的訪問,網絡傳輸,業務邏輯計算),幾十毫秒甚至幾百毫秒,對架構擴展性的要求更高
  • 靜態頁面與動態頁面以不一樣域名區分

4、頁面靜態化

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

這就是互聯網架構中的「頁面靜態化」優化技術。

舉例,以下圖,58同城的帖子詳情頁,本來是須要動態生成的:

img

  • 瀏覽器發起http請求,訪問/detail/12348888x.shtml 詳情頁
  • web-server層從RESTful接口中,解析出帖子id是12348888
  • service層經過DAO層拼裝SQL語句,訪問數據庫
  • 最終獲取數據,拼裝html返回瀏覽器

而「頁面靜態化」是指,將帖子ID爲12348888的帖子12348888x.shtml提早生成好,由靜態頁面相關加速技術來加速:

img

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

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

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

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

  • 58速運的城市頁只有幾百個,就能夠用這個優化,只需提早生成幾百個城市的「靜態化頁面」便可
  • 一些二手車業務,只有幾萬量二手車庫存,也能夠提早生成這幾萬量二手車的靜態頁面
  • 像58同城這樣的信息模式業務,有幾十億的帖子量,就太適合於靜態化(碎片文件多,反而訪問慢)

6、總結

「頁面靜態化」是一種將本來須要動態生成的站點提早生成靜態站點的優化技術。

總數據量不大,生成靜態頁面數量很少的業務,很是適合於「頁面靜態化」優化。

相關文章
相關標籤/搜索