五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 利用json隔離網(wǎng)站布局和頁面實際模塊的內(nèi)容載入

利用json隔離網(wǎng)站布局和頁面實際模塊的內(nèi)容載入

文章來源:365jz.com     點擊數(shù):238    更新時間:2015-09-16 19:50   參與評論

  在項目中,有個這樣的需求:動態(tài)維護頁面的布局,以及動態(tài)載入布局容器中的具體模塊。最開始的實現(xiàn)方式是,在服務(wù)端一次性獲取當(dāng)前頁面的布局結(jié)構(gòu),當(dāng)前頁面的所有功能模塊,同時通過循環(huán)檢索某一功能模塊屬于哪個容器并合理放置,最后獲取具體功能模塊的實際內(nèi)容,一次性輸出完成頁面的顯示。

  雖然解決了問題,但這種方式導(dǎo)致了單次請求返回數(shù)據(jù)的急劇增大,特別是在頁面布局復(fù)雜、功能模塊繁多時,尤其明顯。

  經(jīng)過多方驗證,我決定采取將布局構(gòu)建和內(nèi)容獲取進行隔離、分批次獲取內(nèi)容的方式,以達到減小單次請求數(shù)據(jù)量的目的。具體步驟如下:

  第一步:采用常規(guī)方式,返回頁面布局HTML結(jié)構(gòu),同時也json方式,返回當(dāng)前頁面的所有功能模塊基本信息

  布局HTML結(jié)構(gòu)示例

Code

 

  同步加載的功能模塊JSON

Code

 

  第二步:在客戶端,利用js,將功能模塊準(zhǔn)確放置如對應(yīng)的布局容器中

  我在布局容器HTML結(jié)構(gòu)中,增加了columnindex屬性,在功能模塊的JSON配置中對應(yīng)了columnIndex屬性,因此利用此屬性,輔以jQuery的強大選擇功能,可以非常方便的將功能模塊放置入對應(yīng)容器,同時JSON配置中的sortIndex屬性可以確定同一容器中的先后順序。

  第三步:利用jQuery的ajax方法,分批次異步加載具體功能模塊的實際內(nèi)容

  我們可以看到,在功能模塊的JSON配置中,每一個功能模塊都具有:widgetName 和 key 2個屬性,widgetName屬性可以確定當(dāng)前功能模塊的實際類型,如上例中的"statichtml"表示靜態(tài)HTML文本模塊,而key屬性,則對應(yīng)于當(dāng)前模塊在系統(tǒng)業(yè)務(wù)邏輯中所對應(yīng)的唯一關(guān)鍵值,這個關(guān)鍵值需要配合功能模塊的具體類型進行綜合應(yīng)用,以實現(xiàn)從數(shù)據(jù)庫或XML配置文件獲取內(nèi)容的目的。

  在異步獲取功能模塊的實際內(nèi)容環(huán)節(jié),我采取了分批次加載的方式,如果同時發(fā)出內(nèi)容獲取的ajax連接超過10個,那么后續(xù)的請求進入等待隊列,等待前面的10個請求。當(dāng)前10個請求返回一個時,則立即從等待隊列中提出一個進行連接。這樣,始終以比較平緩的數(shù)據(jù)請求量連接服務(wù)器,而頁面內(nèi)容也始終以比較緩和的方式呈現(xiàn)。

 

  這種方式還值得完善的地方就是,最好能夠靈活設(shè)定,哪個功能模塊的加載具有高優(yōu)先級就更好了。呵呵呵,慢慢再完善了。

 ?。ň唧w效果請瀏覽:http://vip.enjoosite.com,因為網(wǎng)站蹭的朋友VPS,所以速度體驗可能不如我文章所說那么明顯,僅提供我的實現(xiàn)思路而已,歡迎討論)

Tag標(biāo)簽: EnjooSite,快速建站

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答?。?點擊進入論壇

發(fā)表評論 (238人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號