2016-11-21 100 views
1

我有關於如何實現延遲加載在我的項目名單更一般的問題,實現電網,等等。我的問題是不是一個具體的框架或語言,因爲我開發不同的項目類型與C#,JAVA,Android的,的WinForms,等延遲加載與DB,客戶端和後端名單

我的問題是,如何實現一個RESTful envirorment這個懶加載模式?

例如,我有一個大約有2個mio數據集的數據庫。用戶在客戶端選擇一些過濾器,服務器響應大約100.000條記錄。這就是爲了向他們展示所有的東西,所有的時間來「加載和渲染」列表控件中的項目需要幾分鐘的時間(在糟糕的日子裏)。更好的方法是向用戶顯示前200個項目,並根據需要加載下一個塊。

又如是搜索在移動設備上的圖像。如果搜索結果大約爲10.000,則用於圖像加載的移動流量將會爆炸。所以最好顯示多達20個條目,並且如果用戶滾動到底部,則例如下一個20個被加載。

那麼,我怎麼能存檔在後端/數據庫/客戶端?不幸的是,我無法查詢「從表中選擇200到400 ......」。

在某些的extern API的,我可以發送「頁面標記」來獲得項目的下一個塊。但是,我怎麼知道用戶要求哪個「頁面」呢?

個不錯的方法我試過是每個請求加載整個集合(100.000記錄在第一個例子),並且只服務所需要的部分。但是,當客戶數量增加時,這是非常重要的資源,10,000名客戶每隔一分鐘就會做一次這樣的事情。

回答

0

你可以使用分頁。例如,客戶端請求X項的第一頁,這樣服務器將只讀取從DB(見LINQskip/take):

DB.Skip(pageNumber * pageSize).Take(pageSize); 

客戶端可以更改過濾器,PAGENUMBER(「下一個頁面「)或pageSize沒有任何問題。