網站開發動靜分離實踐

  1. 動靜分離的實現思路
    動靜分離是將網站靜態資源(HTML,JavaScript,CSS,img等文件)與後臺應用分開部署,提高用戶訪問靜態代碼的速度,降低對後臺應用訪問。

動靜分離的一種做法是將靜態資源部署在nginx上,後臺項目部署到應用服務器上,根據一定規則靜態資源的請求全部請求nginx服務器,達到動靜分離的目標。
1.1 靜態資源部署至CDN上
我們的方案是直接將靜態資源全部存放在CDN服務器上。因爲之前項目中的JavaScript,CSS以及img文件都是存放在CDN服務器上,將HTML文件一起存放到CDN上之後,可以將靜態資源統一放置在一種服務器上,便於前端進行維護;而且用戶在訪問靜態資源時,可以很好利用CDN的優點——CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。
1.2 後端API提供數據
後端應用提供API,根據前端的請求進行處理,並將處理結果通過JSON格式返回至前端。目前應用主要採用Java平臺開發,因此應用服務器主要是Tomcat服務器,現在也開始有部分應用採用 node進行開發,應用服務器也開始使用node服務器。
1.3 前後端域名
動靜分離因爲靜態資源和應用服務分別部署在不同的服務器上,因此會面臨域名策略的選擇。
相同域名採用相同域名下,用戶請求api時可以避免跨域所帶來的問題,相對開發更爲快速,工作量也相對小一些。
不同域名
前後端採用不同域名時,需要前後端開發時兼容跨域請求的情況,開發量相對上一種會稍多一些。解決跨域方式最常用的方式就是採用JSONP,還有一種解決方式使用CORS(HTTP訪問控制)允許某些域名下的跨域請求。
目前在我們的項目中JSONP方式更多,CORS因爲需要瀏覽器支持,因此只會在APP內嵌HTML5,且需要POST方式時中使用。
採用不同域名的方式優點也是非常明顯的,不同域名採用兩個域名服務器,不同的域名服務器根據請求的不同採用不同的負載均衡策略;而且不同域名也可以郵箱方式前端攜帶過多的Cookie。
2. 動靜分離的實現優缺點
2.1 優點
api接口服務化:動靜分離之後,後端應用更爲服務化,只需要通過提供api接口即可,可以爲多個功能模塊甚至是多個平臺的功能使用,可以有效的節省後端人力,更便於功能維護。
前後端開發並行:前後端只需要關心接口協議即可,各自的開發相互不干擾,並行開發,並行自測,可以有效的提高開發時間,也可以有些的減少聯調時間
減輕後端服務器壓力,提高靜態資源訪問速度:後端不用再將模板渲染爲html返回給用戶端,且靜態服務器可以採用更爲專業的技術提高靜態資源的訪問速度。
2.2 缺點
開發量變大,前後端交流成本升高:後端api返回的數據,往往是有自身邏輯在內的,比如返回數據中的包含status(1-處理中,2-處理成功,3-處理失敗),前端需要理解status的不同含義,對應的前端操作需要理解(如,status =1 or status = 2,不可提交)。
在業務高速發展時需要慎重考慮:因爲開發量變大,如果在業務開始階段,缺乏前端又要求開發速度很快,就需要慎重考慮這種方式的實現成本對業務發展的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章