以B站為例:
主域名:www.bilibili.com
賬戶登錄注冊相關域名,包括app登錄:passport.bilibili.com
靜態資源css,js,img等相關域名:static.bilibili.com
用戶中心相關域名:space.bilibili.com
webapi接口相關域名:api.bilibili.com
app接口相關域名:app.bilibili.com
另外有一些隱性的域名:
例如數據庫連接相關的:db.bilibili.com
redis緩存相關的:redis.bilibili.com
由此可見:
系統的架構無非就是一個“拆”字,合理的將不同的模塊拆分成不同的域名,有以下幾點好處
1、每個域名配置獨立的服務器,服務器的業務更加專注,擴展更加方便。
2、針對特定的業務,可以更方便的對服務器進行優化。
相關分析
1、登錄狀態,設置cookie,范圍域名未.bilibili.com,保證跨域名能登錄狀態
2、用戶中心用特定域名,增加url的友好性,防止url過長,能直接https://space.bilibili.com/2374194這種域名+id的格式,url表現力極強。
3、api相關用api.bilibili.com域名。
4、動態數據,例如首頁,各分區頁,數據變更頻繁的頁面,全部用ajax請求數據的方式,因為數據變換頻繁,也就沒有渲染兼容seo的必要了。
5、播放頁,最重要的一個頁面,相關標題和簡介等,則需要用到渲染的方式,兼容seo,其他一些動態數據,例如評論,播放量等數據,統一用ajax加載。
6、cdn,靜態資源css,js,img等統一設置了很長的cdn緩存,更新用url參數版本號來控制。
7、甚至一些非動態的接口數據,也可以用cdn來緩存,從而減少db和redis的壓力。