Laravel 对 json 响应的低性能

在我的 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 响应的渲染时间?


$数据模型:

http://img.mukewang.com/62ac377e0001284404560668.jpg

附加:


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;



米脂
浏览 225回答 2
2回答

拉风的咖菲猫

有几种方法可以对请求进行概要分析,以获取有关服务器需要这么长时间才能响应的一些信息。BlackFire&nbsp;- 默认情况下在 Laravel Homestead 开发中或 Laravel Forge 中用于生产Laravel DebugBar&nbsp;- 也可以用于开发(我个人最喜欢的)这些将为您提供更多关于可能需要时间才能完成的代码部分的信息,如果您在谷歌周围搜索 Laravel 或 PHP 分析器以找到适合您需求的内容,还有更多信息。

守着一只汪

查看Enlightn,这是一个提高 Laravel 应用程序性能和安全性的工具。它会扫描您的代码和服务器配置,以提供有关提高性能和安全性的可行建议。
打开App,查看更多内容
随时随地看视频慕课网APP