0

我的应用程序已经使用了 6 个月,而且很久以前我就不再被要求解决新的错误了.. 生活很棒 :)

现在我完成了其他项目的工作,并希望加快我的应用程序的速度。

问题

EG:我有一个像这样的非常简单的函数,我使用 AJAX 调用它。

在我看到的浏览器控制台中,该函数需要 700 毫秒才能完成。我计算了触发函数主体中的实际代码需要多少毫秒。毫不奇怪,只有大约 100 毫秒,这是可以的。

public function getObjVisibility() 
{
    $start = round( microtime( true ) * 1000 );

    $this->autoRender = false;
    $tmp = $this->Obj->find ( 'first', array 
        (
            'conditions' => array 
            ( 
                'obj_id' => $_POST['id']
            ),
            'fields' => array
            (
                'visible'
            )
        )
    );
    $result = $tmp['Obj']['visible']; //added field so I could count even the assigning

    $end = round( microtime ( true ) * 1000 );
    fb::log( "time: ", $start - $end ); // firePHP logging to console

    return $tmp['Obj']['visible'];
}

所以这个函数最多需要大约 100 毫秒,至少需要大约 700 毫秒。

你们中有人知道发生了什么吗?我无法为谷歌制定一个合理的问题给我一个合理的答案,所以我问你们:)

4

2 回答 2

2

蛋糕请求/响应通过调度、路由、渲染等……所以它不仅仅是那个动作的主体。你试过DebugKit吗?它具有一些分析功能,可以帮助您隔离慢速部分。

于 2013-07-11T23:22:24.763 回答
0

出现这些问题的主要原因显然是这样一个事实,即我的应用程序需要几个同步的 AJAX 调用来执行某些操作。

当我在实现过程中同步和异步调用我的调用时,我没有考虑必须从服务器发送和接收的数据包,而是发送了几个小请求,每个请求都需要一些时间来加载,具体取决于客户端连接。

我通过重新同步应用程序(async: false从 jQuery AJAX 调用中删除参数)和/或通过一个请求从服务器获取多个信息来解决这个问题。

如果您认为这是一个坏主意,请告诉我 :-)

于 2013-07-17T14:37:23.207 回答