PHP Codeigniter 4 框架速度優化

會選擇 Codeigniter 有一個很大的需求是因為要能快速入手,簡單好用,從 3.x 個位數版本開始,現在推出 4 大改版,結構和其他框架也越來越像。

最近修改一份無框架的專案程式碼,在不更改業務邏輯、資料庫結構的狀況下,移植到 ci4 上面以後才發現,速度變的奇慢無比。想到要追蹤 ci4 的執行速度,才發現 composer 下來的 core 還挺複雜的阿! 功能強大結果變慢,屠龍的少年,終將變成惡龍呀……。

於是開始研究 Ci4 優化的方法,這邊記錄下來。

在優化之前,以兩個檔案讀取作為指標。

讀取名叫 init 的頁面 2.3 sec

Ajax 讀取前端設定 JSON 資料 3.41 sec

處理的動作

  • 在 app/Config/Modules.php 中,把 $enabled 和 $discoverInComposer 設定為 false ,參考文件。( init 頁面 828ms, ajax load settings json 2.11 sec)
  • 同一個檔案中,把 $aliases 設定為空集合。( init 頁面 761.82ms, ajax load settings json 1.8 sec)
  • 在 app/Config/Toolbar.php 中,把 $collectors 設定為空集合。在 app/Config/Events.php 中,有一段標記 ‵Debug Toolbar Listeners.‵ 的程式碼,刪除或註解起來。 ( init 頁面 640.70ms, ajax load settings json 1.54 sec)
  • 在 app/Config/Filters.php 中,預設有幾個 class 開啟,分別是:csrftoolbarhoneypotinvalidcharssecureheaders。這幾個有些是安全設定,自行確認檢查哪些要移除。
  • 檢查 app/Config/Autoload.php 裡面有哪些用不到的,儘量在只需要使用時才用。

效果顯著。

init 頁面從 2.3 秒到 683豪秒
AJAX 讀取前端設定從 3.41 秒到 1.65 秒

但是無框架的原始程式碼呼叫速度還是非常的快的。在相同資料庫、相同 php 運行環境的狀況下,速度是框架 3 倍以上。

init 頁面 208.03 豪秒
AJAX 讀取前端設定 354.94 豪秒

這沒辦法比,革命尚未成功就是。


已發佈

分類:

作者: