2014-02-12 61 views
3

我有一個網格(員工網格),其中有1000-2000行。 我在網格中顯示員工姓名和部門。 當我獲得網格數據時,我也會獲得該員工的其他詳細信息(出生日期,地點,職位等) 因此,用戶可以選擇編輯員工詳細信息。當他點擊編輯時,我需要在彈出窗口中顯示其他員工詳細信息。由於我已將所有數據存儲在JavaScript中,因此我搜索特定的ID並顯示所有詳細信息。所以代碼會像哪個更好,在javascript或數據庫中搜索?

function getUserDetails(employeeId){ 
    //i store all the employeedetails in a variable employeeInformation while getting //data for the grid. 
    for(var i=0;i<employeeInformation.length;i++){ 
     if(employeeInformation[i].employeeID==employeeId){ 
       //display employee details. 
     } 
    } 
} 

第二個解決方案會像通僱員到數據庫中,並得到了員工的所有信息。代碼將如

function getUserDetails(employeeId){ 
     //make an ajax call to the controller which will call a procedure in the database 
     // to get the employee details 
     //then display employee details 
    } 

因此,當我處理1000-2000條記錄時,您認爲哪種解決方案最適合。 我不想通過在頁面中存儲大量數據來使JavaScript變得沉重。

更新:

所以我的一個朋友想出了一個簡單的解決方案。 我爲500行(平均)存儲4列。所以我認爲網頁不應該有很快的緩慢。 在將行加載到網格時,在編輯鏈接下,我將data-rowId作爲屬性,以便檢索數據。 說我將所有員工信息存儲在名爲employeeInfo的變量中。 ('data-rowId')將給出rowId和employeeInfo [$(this).attr('data-rowId')]應該提供所有關於僱員。 而不是存儲employeeid並循環查找僱員表以查找匹配的employeeid,rowid應該做到這一點。這很簡單。但沒有打動我。

+0

我們可以給出什麼可能的答案?首先*顯而易見的問題,你的記錄大小是多少? **細節**的尺寸是多少? –

+0

如果你已經有了javascript中的信息,我會避免再做一次ajax調用。在某些時候,您將不得不搜索相應的ID的記錄,不妨在javascript中進行。 – dckuehn

+0

它取決於你的字段數量,如果使用JavaScript,將工作速度快,而不是使用的數據庫。 Databse ajax響應了一些時間。 – Zeeshan

回答

1

我建議你對控制器進行AJAX調用。由於兩個主要原因

  1. 由於安全問題,不建議在javascript中處理數據庫活動。
  2. Javascript運行在客戶端計算機上,它應該具有最少的負載和計算。

Javascript應儘可能輕。所以我建議你在數據庫中做它。

0

不要指望JavaScript的性能,因爲它很大程度上取決於正在運行的計算機。我建議你在服務器端進行存儲和搜索,而不是在瀏覽器中加載大量有用的數據,這些數據相當侷限於最終用戶的資源。 在JavaScript中運行長循環可能會導致界面反應遲鈍並令人生氣。使用Ajax調用來獲取所需的數據是一種很好的做法。

0

您使用的是HTML5嗎?你的用戶通常會有相對較快的多核計算機嗎?如果是這樣,網絡工作者(http://www.w3schools.com/html/html5_webworkers.asp)可能是一種將搜索卸載到客戶端同時保持UI響應的方式。

請注意,我從來沒有使用過一個工作者,所以這個建議可能會離開基地,但他們當然看起來像這樣的有趣。

0

在關注點分離的條件,並建議最好的辦法,你應該處理您的服務器上域級別的數據檢索,並依託客戶端進行處理和顯示只與它有關的記錄。

通過爲您的客戶端填充數千條記錄然後進行解析,排序,搜索等操作,您不僅會遇到巨大的性能下降並降低用戶體驗,還會產生很多潛在的安全風險。顯然,這還取決於應用程序的數據的性質,但作爲員工記錄的東西,例如,你可能不希望存儲上的客戶端。任何使用該應用程序的人都可以訪問所有這些。

更務實的方法解決這個問題是讓你的控制器填充客戶端僅屬於它,省去了通過多條記錄搜索需要的特定數據。您還可以通過向服務器發送ajax查詢來檢索數據來檢索單個對象。這有兩個好處,即保證顯示數據庫的當前狀態,以及比你希望用JS編寫的任何東西都更加優化。

相關問題