Doctrine query_cache_driver似乎没有在symfony中缓存查询

时间:2015-11-14 10:07:53

标签: symfony caching doctrine-orm apc

我要么误解了query_cache_driver,要么做错了什么或者错过了一个小小的足迹,所以我很高兴在这里责备自己。激活后,即使用户更改了查询,是不是应该使用缓存查询而不是更改查询?请参阅下面的示例。

注意:我正处于dev模式,因此请致电http://my.local/app_dev.php/backend/league并使用APC Admin进行统计。

config_dev.yml

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        query_cache_driver: apc

这一切都没有缓存

public function findAll()
{
    $qb = $this->createQueryBuilder('l')
        ->select('l')
        ->orderBy('l.name', 'ASC')
        ->getQuery();

    $qb = $qb->getResult();

    return $qb;
}

SELECT 
  l0_.id AS id0, 
  l0_.name AS name1 
FROM 
  league l0_ 
ORDER BY 
  l0_.name ASC

enter image description here enter image description here

这是在更改查询和缓存之前

public function findAll()
{
    $qb = $this->createQueryBuilder('l')
        ->select('l')
        ->orderBy('l.name', 'ASC')
        ->getQuery()
        ->useQueryCache(true);

    $qb = $qb->getResult();

    return $qb;
}

SELECT 
  l0_.id AS id0, 
  l0_.name AS name1 
FROM 
  league l0_ 
ORDER BY 
  l0_.name ASC

enter image description here enter image description here

这是在更改查询和缓存激活之后

如果query_cache_driver缓存查询,这不应该与上面相同吗?你可以看到两个图像是一样的。

public function findAll()
{
    $qb = $this->createQueryBuilder('l')
        ->select('l')
        ->getQuery()
        ->useQueryCache(true);

    $qb = $qb->getResult();

    return $qb;
}

SELECT 
  l0_.id AS id0, 
  l0_.name AS name1 
FROM 
  league l0_

enter image description here enter image description here

0 个答案:

没有答案