在我的 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>";
}
}
该模型:
<?php
namespace 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;
米脂
拉风的咖菲猫
守着一只汪
随时随地看视频慕课网APP