什么是分頁技術(shù)
分頁,是一種將所有數(shù)據(jù)分段展示給用戶的技術(shù).用戶每次看到的不是全部數(shù)據(jù),而是其中的一部分,如果在其中沒有找到自習(xí)自己想要的內(nèi)容,用戶可以通過制定頁碼或是翻頁的方式轉(zhuǎn)換可見內(nèi)容,直到找到自己想要的內(nèi)容為止.其實這和我們閱讀書籍很類似.
下頁顯示了兩種常見的分頁方式:
分頁的意義
分頁確實有效,但它一定會加大系統(tǒng)的復(fù)雜度,但可否不分頁呢?如果數(shù)據(jù)量少的話當(dāng)然可以.但是對于企業(yè)信息系統(tǒng)來說數(shù)據(jù)量不會限制在一個小范圍內(nèi).如果不顧一切的Select * from某個表,再將返回的數(shù)據(jù)一古腦的扔給客戶,即使客戶能夠忍受成千上萬足夠讓人眼花繚亂的表格式數(shù)據(jù),繁忙的網(wǎng)絡(luò),緊張的服務(wù)器也會提出它們無聲的抗議,甚至有時會以徹底的罷工作為終結(jié).這個結(jié)局有點像古代為所欲為的暴君和他忍無可忍的臣民之間的故事.
程序員不是暴君,他希望程序使生活變得更好而不是更糟.考慮到企業(yè)信息系統(tǒng)多是三層甚至更多層架構(gòu)的事實,程序員在向客戶展示數(shù)據(jù)時都應(yīng)該采取分頁的形式.如果他不想被抱怨淹沒或是半夜被電話驚醒的話。
從請求發(fā)起到返回數(shù)據(jù)的整個過程
現(xiàn)在你已經(jīng)下定決心想要分頁了,在動手書寫代碼之前,先讓我們回想一下,在典型的三層架構(gòu)中,從請求發(fā)起到返回數(shù)據(jù)的整個過程.如下所示:
在哪里進(jìn)行分頁
從上面的圖中我們可以觀察得知,在SQL語句處理完畢后,數(shù)據(jù)庫,WebApplication和Browser都能進(jìn)行分頁,那在哪里分頁好呢?
判斷的標(biāo)準(zhǔn)是速度,顯而易見,數(shù)據(jù)庫服務(wù)器,Web應(yīng)用服務(wù)器和客戶端之間是網(wǎng)絡(luò),如果網(wǎng)絡(luò)傳遞的數(shù)據(jù)量越少,則客戶端獲得響應(yīng)的速度越快.而且一般來說,數(shù)據(jù)庫服務(wù)器和Web應(yīng)用服務(wù)器的處理能力一般比客戶端要強(qiáng)很多.從這兩點來看,在客戶端分頁的方案是最不可取的.
其次就剩下了在Web服務(wù)器端分頁和在數(shù)據(jù)庫端分頁兩種方式了,如果選擇在Web服務(wù)器端分頁的話,大部分的被過濾掉的數(shù)據(jù)還是被傳輸?shù)搅薟eb應(yīng)用服務(wù)器端,與其這樣還不如直接在數(shù)據(jù)庫端進(jìn)行分頁.
因此比較好的分頁做法應(yīng)該是每次翻頁的時候只從數(shù)據(jù)庫里檢索頁面大小的塊區(qū)的數(shù)據(jù)。這樣雖然每次翻頁都需要查詢數(shù)據(jù)庫,但查詢出的記錄數(shù)很少,網(wǎng)絡(luò)傳輸數(shù)據(jù)量不大,如果使用連接池更可以略過最耗時的建立數(shù)據(jù)庫連接過程。而在數(shù)據(jù)庫端有各種成熟的優(yōu)化技術(shù)用于提高查詢速度,比在應(yīng)用服務(wù)器層做緩存有效多了。
新聞熱點
疑難解答
圖片精選