我正在構建一個ajax應用程序,我可以選擇如何構造數據尋呼功能。基本上,用戶將使用1,000-2,000條記錄,但只有20條記錄從數據庫中同時加載,發送到客戶端,然後緩存在本地會話存儲中。這些記錄是包含對象屬性(基本上是客戶記錄)的json字符串。尋呼ajax應用程序的設計模式
下面是兩種選擇,讓我們假設我們正在處理1,500條記錄,並且每個頁面長度爲20條記錄。 困境是存儲記錄的1,500個ID的地方。
選項1: 被存儲爲在服務器會話,和序列INT的列表和反序列化對每個請求的1500個記錄的ID。客戶端不知道每個頁面的記錄ID,只需要一個頁碼。在服務器上,當用戶請求頁面X時,我們查看int列表並確定頁面X的記錄ID,加載這些記錄並向客戶端發送帶有這些ID的json字符串。這裏的缺點是我們在服務器會話中列出了1,500個整數。好處是,當我們請求一個頁面時,我們只向服務器發送一個int。
選項2: 的1500個記錄的ID被髮送到客戶端時,然後該列表存儲在本地存儲會話用戶登錄。當用戶請求頁面X時,JavaScript函數確定頁面X上的哪些記錄ID,並向服務器發送一個20個字節的json序列化列表。服務器然後用這些ID返回記錄。好處在於服務器端會話要輕得多,並且應該可以提高性能(無需在每個請求中讀/寫/序列化該列表),並且可能更具可擴展性。缺點是我們每次請求頁面時都會向服務器發送20個整數列表。
我傾向於選擇2:這是最好的方法嗎?
注1)我要求用戶支持HTML5本地存儲和2)服務器端實現將是azure和WCF。
爲什麼客戶端(或者服務器)需要存儲這些ID?你不能只存儲當前頁碼並獲得下一頁?似乎你正在做的工作比你需要的多,但也許我錯過了一些東西。 – CodingGorilla 2012-03-23 20:49:14
你對數據使用SQL嗎?或者他們存儲在其他地方?如果你使用SQL有必要緩存數據?如果沒有,那麼你可以使用SQL的直接分頁命令,並避免保留除頁碼和頁面大小之外的任何內容。 – Aristos 2012-03-23 20:49:37
在數據庫中存儲1500個ID?!?客戶端請求頁碼?繁榮完成。 – dotjoe 2012-03-23 20:51:35