如何减少浏览器的负载?

时间:2013-02-26 05:38:49

标签: mysql caching twitter-bootstrap cakephp-2.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调用查询处理的负担吗?

1 个答案:

答案 0 :(得分:1)

Cake有caching,可用于存储从数据库中检索到的数据。因此,重复请求不会访问数据库,但是,您需要注意不要使用永远不会再次使用的数据填充缓存。

我会尝试针对常见的使用模式进行优化。例如,用户键入'abdc',命中退格两次,然后键入'cd'。在这种情况下,你几乎可以立即获得'ab'和'abd'的缓存命中,但是5分钟后它可以安全地清除与此查询相关的所有内容。