我要么误解了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
这是在更改查询和缓存之前
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
这是在更改查询和缓存激活之后
如果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_