2009-01-02 106 views
37

什麼是最好處理分頁?服務器端或動態使用JavaScript?分頁:服務器端還是客戶端?

我正在研究一個沉重的ajax項目,並動態地提取數據,所以我一直在研究一個使用dom的javascript分頁系統 - 但我開始認爲它會更好處理它所有的服務器端。

大家的想法是什麼?

回答

58

正確答案取決於您的優先級和要分頁的數據集的大小。

服務器端分頁是最好的:

  • 大的數據集
  • 更快的初始頁面加載
  • 輔助功能對於那些沒有JavaScript的運行

客戶端分頁是最好的用於:

  • 小的數據集
  • 更快的後續頁面加載

所以,如果你對分頁主要化妝品的原因,更有意義來處理它的客戶端。如果你想縮短初始加載時間,服務器端是明顯的選擇。

當然,如果您使用Ajax加載後續頁面,客戶端在後續頁面加載時間上的優勢會減少。

7

在客戶端執行此操作將使您的用戶首先下載可能不需要的所有數據,並刪除分頁的主要優點。

對於這種類型的AJAX應用程序,最好的方法是讓AJAX調用下一頁的服務器,並使用客戶端腳本添加更新當前頁面。

+2

如果加載時間問題,它可能是一個好主意,預加載頁面時加載下一頁。除非有人以非常快的速度翻兩頁,否則將導致加載時間爲零。 – ThiefMaster 2010-12-02 11:19:10

3

服務器端 - 爲當前視圖發送足夠的內容給客戶端。

5

如果您有大頁面和大量頁面,您最好通過AJAX從服務器以塊的形式請求頁面。所以讓服務器根據您的請求URL進行分頁。

您還可以預取接下來幾頁,用戶可能會查看該頁面以使界面看起來更具響應性。

如果只有幾頁,在客戶端預先抓取並分頁可能是更好的選擇。

3

即使數據量較小,最好的選擇是服務器端分頁。如果您的Web應用程序進一步擴展,您將不必擔心。

對於較大的數據大小,答案很明顯。

2

在實際的限制世界中,我會在服務器端分頁以節省與發送數據相關的所有資源。此外,服務器需要保護自己免受惡意/故障客戶端的需求,尋求一個巨大的頁面。

一旦代碼被快樂地隆隆,我想補充「聰明」的客戶端,以獲得「下一步」和「上」頁面,並認爲在內存中。當用戶轉到下一頁時,更新緩存。

如果客戶端軟件做這種頁面緩存的,不要考慮如何快速您的數據的年齡(可能會改變),如果你應該檢查數據的緩存網頁仍然有效。如果年齡超過2分鐘,可能會重新申請。也許有一個「髒」的標誌。類似的東西。希望你覺得這有幫助。 :)

2

我喜歡服務器端分頁。但是,在實現它時,你需要確保你正在優化你的SQL。例如,我相信MySQL,如果你使用LIMIT選項,它不會使用索引,所以你需要重寫你的sql以正確使用索引。

G-人

3

你的意思是你的JavaScript在內存中的所有數據,並顯示一個頁面的時間?或者,它使用AJAX,根據需要從服務器下載每個頁面?

如果是後者,你可能還需要考慮排序。如果您使用JavaScript進行排序,則只能一次排序一頁,這沒有多大意義。所以你的排序應該在服務器上完成。

相關問題