0

クラウドとcssフレームワークのTwitterブートストラップで複数のデータベースを使用して、ajaxで「typeahead」を使用してテキストフィールドの提案を取得しています。これで、すべてのキーアップイベントで、1つのajax呼び出しが発生し、次のようにクエリが発生します。

public function prod_identifier_typeahead($value) {             
    $db = ConnectionManager::getDataSource('incident_mgmt');
    $list = $db->rawQuery('select id, identifier from products where identifier like "'.$value.'%";');      
    $options = array();
    while ($row = $db->fetchRow()) { 
        $options[] = array('id' => $row["products"]["id"],'name' => $row["products"]["identifier"]);                    
    }       
    $this->set('options', $options);
    $this->set('_serialize', 'options');        

}

すべてのajax呼び出しは接続オブジェクトを使用します。今、誰かがこのajax呼び出しクエリ処理の負荷を減らすのを手伝ってくれますか?

4

1 に答える 1

1

Cake にはキャッシュがあり、データベースから取得したデータを保存するために使用できます。したがって、重複したリクエストがデータベースにヒットすることはありませんが、二度と使用されないデータでキャッシュをいっぱいにしないように注意する必要があります。

一般的な使用パターンに合わせて最適化を試みます。たとえば、ユーザーが「abdc」と入力し、バックスペースを 2 回押してから「cd」と入力します。この場合、'ab' と 'abd' のキャッシュ ヒットはほぼ即座に得られますが、5 分後には、このクエリに関連付けられたすべてを安全にクリアできる可能性があります。

于 2013-02-26T06:02:16.537 に答える