easyUI datagrid 多行多列數據渲染異常緩慢原因以及解決方法


原因

最近,在優化之前公司幫聯想(外包)做的一個老的后台管理系統,由於項目是基於easy UI框架,頁面是后台用jsp實現的,再加上在公司推行前后端分離的實踐,大部分項目都基於vue采用前后端分離去實現。所以當后台哥們兒告訴我,某個用datagrid渲染的表格,加載時間長達30多秒,讓我去優化的時候,我的內心是崩潰的,但是我是沒法拒絕的,誰讓我們搞前端的呢!

過程

說干就干,從svn上更新下代碼,便開始搞起。頁面渲染過慢總體分兩種原因,后端接口傳輸速率慢和前端頁面渲染慢,當然先從接口下手,取到后台接口,放在postman中模仿前端發送請求發現秒返回數據。......那么很明顯問題不在后台了。確定問題在前台了,首先到easy UI官網查看datagrid的API文檔,確定代碼語法沒有問題,接下來就是用瀏覽器搜索了,上網查了下給出的解決datagrid大數據渲染緩慢的方法,要么是版本不一樣,要么就是沒效果。但是有一個方法,通過設置rownumbers=false,可以減少渲染時間,但是表格渲染時間還是要將近20秒,並且設置false之后,單元格的行號就沒有了,顯然這是不行的。

完美解決

本來已經絕望了,感覺問題應該是框架設計的bug,只能修改源碼了,但是,我不死心一邊翻看文檔,一邊尋找可能的解決辦法。無意中看到,datagrid表格渲染會通過計算表格元素寬度,取出最寬的表格,對列寬負值。我靈機一動我們渲染的表格列數達到了30列,官方的示例都在10列左右,難道是要設置固定列寬(width),來降低表格計算寬度消耗的時間。我確定就是這個原因,立刻修改代碼,提交svn,后台重啟服務器,重新測試了一下,從之前的將近30多秒,現在2秒左右。問題完美解決!給th標簽手動設置寬度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM