0

我在云和 css 框架 twitter bootstrap 上使用多个数据库来获取使用带有 ajax 的“typeahead”的文本字段的建议。现在在每个 keyup 事件上,一个 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”,按两次退格键,然后键入“cd”。在这种情况下,您几乎会立即在“ab”和“abd”上获得缓存命中,但 5 分钟后清除与此查询相关的所有内容可能是安全的。

于 2013-02-26T06:02:16.537 回答