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

0

これらの問題が発生する主な理由は明らかに、私のアプリケーションがいくつかのアクションを実行するためにいくつかの同期された AJAX 呼び出しを行うという事実です。

実装中に呼び出しの同期と非同期を行っていたので、サーバーから送受信する必要があるパケットについては考えず、いくつかの小さな要求を送信しています。クライアントの接続によっては、それぞれの読み込みに時間がかかります。

アプリを再同期する(async: falsejQuery AJAX呼び出しからパラメーターを削除する)か、1つのリクエストでサーバーからいくつかの情報を取得することで、これを解決しています。

これが悪い考えだと思うなら、私に知らせてください:-)

于 2013-07-17T14:37:23.207 に答える