1. 程式人生 > >電商網站的商品詳情頁系統架構

電商網站的商品詳情頁系統架構

電商網站的商品詳情頁系統架構

小型電商網站的商品詳情頁系統架構

小型電商網站的頁面展示採用頁面全量靜態化的思想。資料庫中存放了所有的商品資訊,頁面靜態化系統,將資料填充進靜態模板中,形成靜態化頁面,推入 Nginx 伺服器。使用者瀏覽網站頁面時,取用一個已經靜態化好的 html 頁面,直接返回回去,不涉及任何的業務邏輯處理。

  • 好處:使用者每次瀏覽一個頁面,不需要進行任何的跟資料庫的互動邏輯,也不需要執行任何的程式碼,直接返回一個 html 頁面就可以了,速度和效能非常高。
  • 壞處:僅僅適用於一些小型的網站,比如頁面的規模在幾十到幾萬不等。對於一些大型的電商網站,億級數量的頁面,你說你每次頁面模板修改了,都需要將這麼多頁面全量靜態化,靠譜嗎?

大型電商網站的商品詳情頁系統架構

大型電商網站商品詳情頁的系統設計中,當商品資訊發生變更時,會將變更訊息壓入訊息佇列中。快取服務從訊息佇列中消費此訊息時,發現有資訊發生變更,便通過呼叫介面,獲取變更後的資料。將整合好的資料推送至 redis 中。Nginx 獲取到最新的快取資料,並且快取到 Nginx 自己本地中。

使用者瀏覽網頁時,動態將 Nginx 本地資料渲染到本地 html 模板並返回給使用者。

雖然沒有直接返回 html 頁面那麼快,但是因為資料在本地快取,所以也很快,其實耗費的也就是動態渲染一個 html 頁面的效能。如果 html 模板發生了變更,不需要將所有的頁面重新靜態化,直接將資料渲染進最新的 html 頁面模板後響應即可。