我在云和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调用查询处理的负担吗?
答案 0 :(得分:1)
Cake有caching,可用于存储从数据库中检索到的数据。因此,重复请求不会访问数据库,但是,您需要注意不要使用永远不会再次使用的数据填充缓存。
我会尝试针对常见的使用模式进行优化。例如,用户键入'abdc',命中退格两次,然后键入'cd'。在这种情况下,你几乎可以立即获得'ab'和'abd'的缓存命中,但是5分钟后它可以安全地清除与此查询相关的所有内容。