在我的 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 关注
- 145 浏览
添加回答
举报
0/150
提交
取消