項目組針對影片詳情頁最原始的設(shè)計是使用xml靜態(tài)文件的形式向IPAD終端提供數(shù)據(jù)內(nèi)容(可能更多地出于性能考慮),后來又使用json靜態(tài)文件 給安卓終端提供數(shù)據(jù)內(nèi)容(文件內(nèi)容小了點,比xml進(jìn)步了些),但是這樣做的弊端越來越多,比如哪個終端想要有一些個性化的數(shù)據(jù)(獨家內(nèi)容或者是mp4視 頻格式),這樣就不得不再為這個終端生成一批靜態(tài)文件,另外還得通過rsync同步這些靜態(tài)文件到前端服務(wù)器,又慢又繁瑣,而且偶爾還會同步不成功。
后來我們放棄了使用靜態(tài)文件的方式,使用redis來存儲詳情頁數(shù)據(jù)(通過腳本定時寫入或者是發(fā)布內(nèi)容的時候觸發(fā)寫入),并使用redis自帶的主 從同步機(jī)制,將數(shù)據(jù)同步到前端各臺服務(wù)器。這樣做的好處是:不僅不用管內(nèi)容的同步了,把所有同步問題都甩給redis本身,而且從redis里面取出數(shù)據(jù) 時,可以根據(jù)來自客戶端的不同請求參數(shù)(不同終端、不同版本),對數(shù)據(jù)進(jìn)行各種的加工后再返回給客戶端。這樣,redis里面只是存儲原始數(shù)據(jù),很好地實 現(xiàn)了數(shù)據(jù)和業(yè)務(wù)的分離。
設(shè)計基于HTTP的接口有很多值得考究的地方,推薦這2篇blog:RESTful API設(shè)計指南 HTTP API設(shè)計指南
另外還有一點值得一提,首頁的設(shè)計中,由于運營的需要,時常會加到幾個版塊,或者去掉某個版塊,這比較容易搞定,只要客戶端和服務(wù)端協(xié)商好就ok。但更繁 瑣的一般是當(dāng)前版本的內(nèi)容比上個版本的內(nèi)容多了或少了幾個版塊,這時需要考慮的是復(fù)用老版本的數(shù)據(jù)(減少運營編輯的工作量),但是又不能影響到老版本的接 口,即向后兼容。
下一篇 JSTL(必會使用)