TYPO3 Extbase 存储库查询缓存
TYPO3 Extbase Repository Query Cache
我有一些关于缓存的问题。先说一些先决条件:
// query 1
$data1 = $this->myRepository->findByPid($myPid);
// query 2
$data2 = $this->myRepository->findOneByUid($myUid);
我的问题:
- 如果我在一个脚本中多次执行查询 2,第一次调用从数据库中检索数据,所有其他从缓存中检索,而不查询数据库?
- 如果我稍后再次执行查询 2(例如在第二个脚本中),是否会再次从数据库中检索数据(没有持久的查询缓存,除非我使用缓存框架来存储此查询的结果)?
- 如果我执行查询 1,然后执行查询 2,查询 1 包含 uid“$myUid”的数据,那么查询 2 的数据是否从缓存中检索?
新旧 Typo3 版本的行为不同。 Afaik 从 Typo3 7.x 开始,如果您使用默认存储库查询,则始终使用缓存。从数据库中检索数据集后,属性 映射器将其映射到域对象,如果该对象已存在于缓存中,则返回它。
在 Typo3 6.x 中,如果您 select 使用 ->findByUid
并且例如作为控制器参数
,您将获得相同 uid 的两个不同对象
我有一些关于缓存的问题。先说一些先决条件:
// query 1
$data1 = $this->myRepository->findByPid($myPid);
// query 2
$data2 = $this->myRepository->findOneByUid($myUid);
我的问题:
- 如果我在一个脚本中多次执行查询 2,第一次调用从数据库中检索数据,所有其他从缓存中检索,而不查询数据库?
- 如果我稍后再次执行查询 2(例如在第二个脚本中),是否会再次从数据库中检索数据(没有持久的查询缓存,除非我使用缓存框架来存储此查询的结果)?
- 如果我执行查询 1,然后执行查询 2,查询 1 包含 uid“$myUid”的数据,那么查询 2 的数据是否从缓存中检索?
新旧 Typo3 版本的行为不同。 Afaik 从 Typo3 7.x 开始,如果您使用默认存储库查询,则始终使用缓存。从数据库中检索数据集后,属性 映射器将其映射到域对象,如果该对象已存在于缓存中,则返回它。
在 Typo3 6.x 中,如果您 select 使用 ->findByUid
并且例如作为控制器参数