2016-10-20 6 views
1

キャッシングに関するいくつかの質問があります。最初のいくつかの前提条件:TYPO3 Extbaseリポジトリクエリキャッシュ

// query 1 
$data1 = $this->myRepository->findByPid($myPid); 
// query 2 
$data2 = $this->myRepository->findOneByUid($myUid); 

私の質問:

  1. 私はスクリプトの中で、クエリ2を複数回実行する場合は、最初の呼び出しは照会せずに、キャッシュから他のすべてのデータベースからデータを取得データベース?
  2. クエリー2を後で実行した場合(2番目のスクリプトなど)、データベースからデータが再度取得されます(キャッシングフレームワークを使用してこのクエリの結果を保存する場合を除き、永続クエリキャッシュはありません)。
  3. クエリ1を実行してクエリ2を実行し、クエリ1にuid "$ myUid"のデータが含まれている場合、クエリ2のデータがキャッシュから取得されますか?
+0

として例えばあなたが同じロジックで、別の質問に私の答えを確認することができます。 http://stackoverflow.com/a/40126426/2070270 –

答えて

3

Typo3以前のバージョンでは動作が異なります。 Typo3 7.x以降のAfaik既定のリポジトリクエリを使用する場合、キャッシュは常に使用されます。データベースからデータセットを取得した後、それはプロパティマッパーによってドメインオブジェクトにマッピングされ、オブジェクトが既にキャッシュに存在する場合、代わりに返されます。 TYPO3の6.xで

あなたは->findByUidでそれを選択した場合、あなたが同じUIDのための2つの異なるオブジェクトになるだろうし、コントローラ引数

+0

あなたの答えは、TYPO3 7を使用している場合です:1.はい?質問2と3は答えられません。 – Sven

+1

#3 - はい #2 - 私の2番目のスクリプトを意味しますか?新しいページリクエストの場合は、永続キャッシュは使用されず、ページキャッシュ(アクションがキャッシュ可能な場合はデフォルトのtypo3キャッシュ)のみが使用されます。同じリポジトリにアクセスする2番目のプラグインを意味する場合は、キャッシュが使用されます –

関連する問題