我正在構建一個工作網站,其中一個更重要的功能是顯示數據的豐富內容網格。默認情況下,它每個頁面只顯示20個項目,但是我們在數據庫中有200個項目可以過濾,排序和搜索。客戶端 - 服務器交互的一些最佳實踐是什麼?
我們的銷售和營銷團隊也請求「列表中的所有」功能,使他們能夠在一個地方顯示所有數據,並通過而不是頁面滾動數據。
這整個系統在服務器端,jQuery和Flexigrid在客戶端上使用ASP.Net MVC構建,並且使用JSON通過AJAX交換兩者之間的數據。
我已經得到了實際的數據傳輸部分非常穩固。一個包含20個結果的頁面對於整個請求需要800ms(通過Flexigrid發送一個請求到服務器並獲得響應)。這更多的是需要一段時間的客戶端處理。
我可以卸載一些客戶端處理的服務器。但是這會使服務器端操作花費更長時間並使文檔的大小返回更大。在高速互聯網連接的情況下不成問題......但事實並非如此。
另一種選擇我是下載儘可能多的數據可能和大部分數據處理轉移到客戶端。這將請求時間減少到基本零(僅提取更改的元素而不是整個數據集)。它在具有快速CPU和大量RAM的機器上工作得很好,但事實並非如此。
因爲至少有一個人檢舉這個「不是一個真正的問題,」讓我澄清...
- 我還能做些什麼來減輕客戶端的處理時間問題,而沒有移動這麼多處理到服務器,我最終與數據傳輸時間問題?
- 平衡客戶端處理與服務器端處理有什麼最佳實踐?
- 錯在服務器端還是客戶端更好?
- 我可以使用哪些工具更好地優化這些交換,以便事情不會繼續發生錯誤?
服務器發送一個JSON對象給客戶端。 JSON對象然後被加載到Flexigrid中。 Flexigrid本身將對象讀入表中,然後執行一些昂貴的'document.createElement()'操作來格式化表以供顯示。它將對象轉換成一個非常密集的HTML表格。 – EAMann
另請參閱下面的詳細回覆... – EAMann