2010-05-11 179 views
2

服務器端分頁是分頁腳本計算數據庫中的條目數然後建立鏈接嗎? 我只知道服務器端是更快,更好,如果有很多的數據和客戶端使用JavaScript?服務器端和客戶端分頁究竟是什麼?

是什麼讓分頁腳本服務器或客戶端?

另外,現在我打算使用this pagination這就像digg風格。有人可以告訴我,如果這是服務器端分頁? (對不起,如果我的術語關閉)

+0

對於小數據集,客戶端分頁更具響應能力 - 初始下載不會太大,javascript可以對數據集進行排序,而無需太多cpu時間,並且每次排序都不會往返服務器。對於大型數據集,服務器端分頁效果更好 - 大型數據集一次下載需要很長時間,並且在javascript中排序不好。 – 2010-05-11 02:54:10

回答

5

客戶端是當您拉下所有數據,然後客戶端將數據分段爲頁面。

服務器端通常由客戶端完成,該客戶端提供傳遞給服務器的密鑰,然後服務器僅選擇該數據的「頁面」。例如,如果您按姓氏顯示人物,則可以通過告訴服務器您想要姓氏爲'A'的人並且您希望返回10行來創建第一個頁面。

服務器會做這樣的事情:

SELECT ssn, fname, lname 
FROM people 
WHERE lname like 'a%' and rownum <= 10 ORDER BY lname, ssn; 

如果最後一個/ 10記錄有與555555555的SSN「方丈」的最後一個名稱,然後在下一個頁面可以通過使這些客戶端檢索值回服務器,然後會做一些如:

SELECT ssn, fname, lname 
FROM people 
WHERE lname >= 'abbot' and ssn > 555555555 and rownum <= 10 ORDER BY lname, ssn; 

服務器端是爲大集數據傳輸到客戶端的數據量的考慮更好遠遠大於如果所有的數據更小被客戶拉下並「翻頁」。它還降低了客戶端所需的內存,並利用數據庫的強大功能對數據進行排序或使用現有的排序索引來加速選擇。

+0

所以你說是否顯示1 2 3 [4] 5 ... 59 60是客戶端?因爲它顯示所有頁面而不僅僅是一頁 – ggfan 2010-05-11 02:47:17

+0

不,服務器可以告訴客戶端有多少頁面,因此客戶端知道要顯示多少個數字。 – 2010-05-11 02:49:42

5

服務器端分頁:

服務器從任何搜索要求得到公正的相關記錄用戶(當前頁#,排序等),並執行需要大量的參數。這些發送到客戶端,以及指向更多頁面的鏈接等。

每次用戶單擊某個鏈接時,都會顯示一個頁面刷新以顯示新數據。

使用時間:

  • 有許多成果或每項結果的有效載荷是相當大的
  • 查找/處理結果是非常耗時
  • 用戶很少去過去的第一頁

沒有那麼大,因爲:

  • 每點擊是往返於服務器,它可能需要一些時間
  • 維護狀態皮塔

客戶端分頁:

服務器發送所有可用記錄到客戶端,並使用Javascript,這些結果被分成頁面和渲染客戶端。更改頁面或項目順序與即時一樣好,並且不需要服務器交互。這使得在服務器端緩存結果變得更加容易。

時很有用:

  • 這裏沒有很多的結果(僅頁面屈指可數)
  • 用戶將使用多頁(因此發送額外的數據是不是一種浪費)
  • 分裂一個表單:因爲每個輸入頁面只是被隱藏並且沒有被刪除,所以整個表單可以以一種格式發送。

沒有那麼大,因爲:

  • 初始頁面加載大得多
  • 操作可能會導致用戶的問題,而JS(雖然優雅降級是完全可能的)
  • 您可能需要將你的顯示邏輯複製到Javascript中。

的混合方法

編寫應用程序充分利用服務器端分頁。一旦這是工作,使用JavaScript來攔截所有改變頁面或排序的鏈接,並通過AJAX發送這些請求。適應你的服務器端腳本,只返回任何給定頁面所需的HTML,並且當它響應AJAX請求時,頁面中沒有任何頁面會變形。

優點:

  • 每個翻頁最小有效載荷=更快的響應時間。
  • 完全可擴展。
  • 完美降解。