[英]How to make query & result cache working for query of associated entity in Symfony2 and Doctrine2?
我正在使用memcahe
作為Symfony Doctrine緩存驅動程序,如下所示:
doctrine:
orm:
metadata_cache_driver: memcache
result_cache_driver: memcache
query_cache_driver: memcache
我有與manyToMany
關系的Article
和Tag
實體。 我有一個控制器,用於獲取所有文章(帶有分頁)並將其呈現為細枝。 以下代碼位於使用useQueryCache()
和useResultCache()
Article
存儲庫中:
$articles = $this->createQueryBuilder('a')
->orderBy('a.created_at', 'DESC')
->getQuery()
->useQueryCache(true)
->useResultCache(true)
->getResult();
該DQL完美地緩存了查詢和結果,因為我沒有在Symfony Profiler教義部分中看到執行查詢。 問題是未緩存關聯的實體Tag
的結果。 我在樹枝中有以下代碼:
{% for article in articles %}
// ...
{% if article.tags|length %}
<div class="tag-wrapper clearfix">
{% for tag in article.tags %}
// ...
{% endfor %}
</div>
{% endif %}
// ...
{% endfor %}
調用article.tags
似乎總是在不緩存的情況下獲取相關文章的標簽。 我在Symfony Profiler原理一節中看到所有查詢都在每次頁面加載時執行。 是否可以緩存它?
您缺少兩件事:
tags
關系,也沒有從查詢中選擇tags
關系 看一下這里的一些指針: Doctrine2(Doctrine 2.1)渴望在Symfony2中加載 。
另一方面,如果您期望在該頁面上有很多帶有很多標簽的文章,我會非常小心。 即使使用緩存,您也可能會遇到時間和/或內存問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.