在我的 Laravel 應用程序中,數據是通過 ajax 加載數據表的。表現非常糟糕。所以我創建了一個測試腳本來測量加載時間。 public function index() { $mt1 = microtime(true); $data = $this->repo->all(); $resource = ProjectResource::collection($data); $response = response()->json($resource); $mt2 = microtime(true); dd($mt2 - $mt1); }數據庫中有 200 行。該模型有 4 個關系。上面的腳本需要> 6s來渲染數據。如果我取消注釋該行$response = response()->json($resource);,加載時間<0.2s有哪些方法可以加快 JSON 響應的渲染時間?$數據模型:附加:trait ProjectAttribute{ public function getActionAttribute() { return $this->editButton().$this->deleteButton(); } public function editButton() { if (Auth()->user()->can('update salesOrder')) { return '<button data-toggle="tooltip" data-placement="top" title="'.__('buttons.general.crud.edit').'" class="btn btn-info btn-sm editProject mr-1" ><i class="fas fa-pen"></i></button>'; } return ""; } public function deleteButton() { if (Auth()->user()->can('delete salesOrder')) { return '<button data-toggle="tooltip" data-placement="top" title="'.__('buttons.general.crud.delete').'" class="btn btn-danger btn-sm deleteProject" ><i class="fas fa-times"></i></button>'; } return ""; } public function getActiveLabelAttribute() { if ($this->active) { return "<span class='badge badge-info'>Aktiv</span>"; } return "<span class='badge badge-secondary'>Inaktiv</span>"; }}該模型:<?phpnamespace App\Models\Project\Project;use Altek\Accountant\Contracts\Recordable;use Altek\Accountant\Recordable as RecordableTrait;use App\Models\Traits\Uuid;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\SoftDeletes;
2 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
有幾種方法可以對請求進行概要分析,以獲取有關服務器需要這么長時間才能響應的一些信息。
BlackFire - 默認情況下在 Laravel Homestead 開發中或 Laravel Forge 中用于生產
Laravel DebugBar - 也可以用于開發(我個人最喜歡的)
這些將為您提供更多關于可能需要時間才能完成的代碼部分的信息,如果您在谷歌周圍搜索 Laravel 或 PHP 分析器以找到適合您需求的內容,還有更多信息。
- 2 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消