2017-07-27 77 views
0

假設我有一個端點返回一個10k結果的數組。我希望他們在包含頁面的表格中顯示。考慮用戶體驗的最佳方式是什麼?在一次來自API的分頁結果 - 分頁和UX

  1. 取一切,分頁
  2. 獲取該網頁的用戶正在訪問的結果,顯示它們並重新獲取一切

我知道,第二個選項是比較慢的,但它可以防止取多次。 你會選擇哪一個?

PS我知道,在涉及SO法規時,這可能不是一個好問題,但我在現實世界的應用程序中幾乎沒有經驗,並且想知道它是如何完成的。

+0

10k結果並不代表收集信息所需的實際工作量,也不代表每個結果中的數據量。 現實世界中的任何人都不會將它全部下載到客戶端,如果它的工作負載很重要收集頁面的信息 - 嘗試儘可能使用緩存 –

+0

@DimaVinogradov 10k結果。每一個都是一個簡單的對象,具有'id','title','description'。整體響應大小約爲900kb。 – Ancinek

+1

那麼,一個人會前後翻頁1-2頁,如果這樣不能產生足夠的信息 - 過濾器應該被應用 -底線,分頁並且每次只檢索一頁 –

回答

1

事實上,你是正確的,它不是最好的問題,當涉及到SO註冊,但我覺得它是一個有效的。

您應該只加載當時需要的項目,每個請求都會去獲取結果。每頁25個的例子是:最初你可能會得到0-25的結果,然後當用戶點擊第2頁時,你將獲取結果25-50等等......

+0

而且讓我們說我有一個更小的陣列,就像50個物體一樣,但可能會增長。我決定每頁打10頁,但是我的分頁欄最多可以容納9個頁碼。我如何知道我應該在那裏裝多少? – Ancinek

+0

你會盡快找出你需要多少頁面(在javascript中:let pagesCount = Math.ceil(resultsCount/perPage)) – Stuart

+0

是的,但它需要獲取所有數據並對其進行計數。然後,每頁獲取它們沒有意義。 – Ancinek

1

你不應該一次加載10k結果。您應該只加載一些限制項目(可能是10,20,50 ...等等)。 如果你檢查你的API,可能有一個limit URL參數和一些叫start?如果是的話,你可以定義你想要的結果以及從哪裏開始。因此,您可以將「分頁」發送到API,並且只需要從第100位獲得50個結果。

+0

是的,在這個端點上有'offset'和'limit'過濾器。每次用戶點擊頁面時,我都會堅持提取。 – Ancinek