2021年12月8日 星期三

ICUmodle 專案 dropdown出來較其他功能緩慢問題

整串的邏輯大約是這樣

1開始載入時 撈取下拉選單,回給前端排列畫面,並產生全域List供篩選使用

2按鈕功能觸發查詢該病患資料

3依照病患id查詢病患該表項資料

4顯示該病患該表項資料


問題

當4顯示資料的時候, 有去使用到1的下拉選單的List

但是發現, 我操作查詢該病患的表項資料速度快的時候,

會發生顯示問題, 開f12發現, 顯示需要的list並沒有撈回來, 他就已經執行篩選顯示


找尋根源問題

一開始推測, getDropdown需要更多的時間, 所以讓他在網頁中載入順序提前,

但是發現, 這還是沒有解決問題

因此, 我做了一個操作




我嘗試在下拉選單組完選單內容的最後印出"finished"字樣

好讓我知道, 什麼時候才把下拉選單組完

此時我發現, 這個finished差不多讓我等了6秒鐘

很明顯, 如果說我整套操作動作在6秒鐘內完成

很有可能會組資料的時候List還沒有準備好


因此

到底為什麼撈取dropdown會需要撈取這麼久呢?

就是這裡的核心問題






我注意到在等待dropdown回傳的過程中,

他在等待account做了很多查詢

我原本以為是權限相關

回去看code發現

原來為了取得帳號名稱

程式查找出整個account內容

因為其權限是eager撈出來的不是lazyload(當初設計上問題)

因此這邊撈出account會再重新把所有權限功能子功能run一遍

整體就是慢在這邊


解法

我使用另一個只撈id和name的Repo function, 準確的撈取我要的資料->帳號名稱

代替原本把account下面所有關聯查出來

大約看到finished在console中, 不到1秒就跑出來了

而證實拖累效能問題的確在這裡


finished!



沒有留言:

張貼留言

[leetcode] [KMP] KMP

ABCDABD... ABCDABF... 簡單的說, 傳統解兩字串匹配部分 可能會來個雙迴圈, 哀個比對, 當不匹配的時候, 會將下方列再後移1位 然後不匹配再後移 然而 如果像上放已經有4個屬於匹配的字串, 她就應該直接往後移四位來匹配, 而不是只移動1位 隱藏的思維是, 當...