为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 对 json 响应的低性能

Laravel 对 json 响应的低性能

PHP
米脂 2022-06-17 16:12:23
在我的 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 分析器以找到适合您需求的内容,还有更多信息。


查看完整回答
反对 回复 2022-06-17
?
守着一只汪

TA贡献1872条经验 获得超3个赞

查看Enlightn,这是一个提高 Laravel 应用程序性能和安全性的工具。它会扫描您的代码和服务器配置,以提供有关提高性能和安全性的可行建议。



查看完整回答
反对 回复 2022-06-17
  • 2 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信