如何使我的API响应更快?

问题描述 投票:0回答:2

我的申请花了很多时间才能返回答复。我该如何减少这段时间?

我已经尝试过不同的缓存配置,但没有成功。我将发布调试计时器的图片以获取更多信息。

enter image description here

是否可以更快地返回此响应?

xdebug cakephp-3.x
2个回答
0
投票

有许多因素共同导致了API的快速发展。

开始于。

  1. 您必须尽可能减少到数据库的往返次数,并且表必须具有索引,以加快操作速度。

  2. 使用轻量级框架来构建API。

  3. 最少使用第三方服务(如果可能,尽量避免使用。

  4. 代码必须结构合理,避免使用效率低下的算法。

  5. 服务器负载必须相应地分配。

  6. 缓存机制。

这些只是可用于避免API响应延迟的几点。

浏览此博客进行深入分析。

https://appinventiv.com/blog/complete-guide-to-api-development/

0
投票
  public function index()
{
    $result = NULL;
    $count = 0;
    $status = false;
    $childrens = false;
    $message = NULL;
    $method = 'index';
    $this->request->allowMethod(['get']);
    if ($this->request->is(['get'])) {
        $params = $this->request->getQueryParams();
        $response = $this->Functions->setParams($params);
        $select = $response['select'];
        $filter = $response['filter'];
        $order = $response['order'];
        $paginate = $response['paginate'];
        $paginate = filter_var($paginate, FILTER_VALIDATE_BOOLEAN);
        $autoFields = $response['autoFields'];
        $autoFields = filter_var($autoFields, FILTER_VALIDATE_BOOLEAN);
        $permission = $this->Functions->getPermission();
        if($permission[0]) 
        {
            $result = $this->MyModelName->find('search', ['search' => $filter])
                                        ->autoFields($autoFields)
                                        ->select($select)
                                        ->order($order);

            if($paginate){
                $result = $this->paginate($result);
            }
            $count = $result->count();
            $this->setResponse($this->response->withStatus(200));
            $message = $this->Functions->getStatusMessage(200, $method);
            $status = true;
        } else {
            $this->setResponse($this->response->withStatus(401));
            $message = $permission[1];
        }
    }
    $result = $this->Functions->returnData($result, $message, $count, $select, $filter, $order, null);
    $this->returnData($childrens, $status, $result);
}
© www.soinside.com 2019 - 2024. All rights reserved.