後台頁面變慢時,團隊第一反應通常是「是不是 SQL 太慢」。有時候是,但不一定。很多後台其實慢在幾個更零碎的地方:過多 eager loading、表格欄位轉換邏輯、權限檢查、外部資源載入,甚至是前端一次 render 太多內容。
我現在會先用最笨但有效的方式分類:
先分清楚慢在哪裡
- 慢在資料查詢
- 慢在 PHP 處理
- 慢在瀏覽器 render
- 慢在第三方服務
只要先把瓶頸分清楚,後面的優化幾乎都會快很多。最糟的是還沒知道慢在哪裡,就直接去改 index 或重寫 component。
另一個我很常看到的問題,是後台頁面承載了過多「方便一次看完」的設計。例如列表頁同時顯示太多關聯資料、每列都做格式化計算、篩選器一載入就查完整選項。這些東西單看都合理,累積在一起就會變成整頁負擔。
後台常見的累積負擔
我通常會先看這幾種東西是不是疊在同一頁:
- 列表頁一次帶太多關聯資料
- 每列都做格式化或額外計算
- 篩選器載入時就查完整選項
- 前端第一屏就 render 太多內容
如果是內部系統,我會更願意做取捨:
先讓第一屏變快
- 先讓第一屏快
- 次要資訊改成展開看
- 不常用篩選器延後載入
後台不是產品 landing page。它最重要的品質不是華麗,而是穩定、清楚、反應可預期。