Debug 慢到不行的後台頁面,我通常先看什麼

管理後台變慢時,先別急著優化 query,先把瓶頸分類清楚。

後台頁面變慢時,團隊第一反應通常是「是不是 SQL 太慢」。有時候是,但不一定。很多後台其實慢在幾個更零碎的地方:過多 eager loading、表格欄位轉換邏輯、權限檢查、外部資源載入,甚至是前端一次 render 太多內容。

我現在會先用最笨但有效的方式分類:

先分清楚慢在哪裡

  • 慢在資料查詢
  • 慢在 PHP 處理
  • 慢在瀏覽器 render
  • 慢在第三方服務

只要先把瓶頸分清楚,後面的優化幾乎都會快很多。最糟的是還沒知道慢在哪裡,就直接去改 index 或重寫 component。

另一個我很常看到的問題,是後台頁面承載了過多「方便一次看完」的設計。例如列表頁同時顯示太多關聯資料、每列都做格式化計算、篩選器一載入就查完整選項。這些東西單看都合理,累積在一起就會變成整頁負擔。

後台常見的累積負擔

我通常會先看這幾種東西是不是疊在同一頁:

  • 列表頁一次帶太多關聯資料
  • 每列都做格式化或額外計算
  • 篩選器載入時就查完整選項
  • 前端第一屏就 render 太多內容

如果是內部系統,我會更願意做取捨:

先讓第一屏變快

  • 先讓第一屏快
  • 次要資訊改成展開看
  • 不常用篩選器延後載入

後台不是產品 landing page。它最重要的品質不是華麗,而是穩定、清楚、反應可預期。