Skip to content

Commit 421eb9a

Browse files
committed
Merge pull request #107 from Flowpack/task-query-cache
[TASK] Add a runtime QueryResult Cache A query with the same payload will return the same content from ES, this change adds a runtime cache and implement the support of the $cacheResult in QueryInterface::execute. This change also enable the runtime cache by default in the ElasticSearchQueryBuilder
2 parents 15e1227 + 9ccd62b commit 421eb9a

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

Classes/Flowpack/ElasticSearch/ContentRepositoryAdaptor/Eel/ElasticSearchQuery.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ class ElasticSearchQuery implements QueryInterface
2525
*/
2626
protected $queryBuilder;
2727

28+
/**
29+
* @var array
30+
*/
31+
protected static $runtimeQueryResultCache;
32+
2833
public function __construct(ElasticSearchQueryBuilder $elasticSearchQueryBuilder)
2934
{
3035
$this->queryBuilder = $elasticSearchQueryBuilder;
@@ -35,7 +40,13 @@ public function __construct(ElasticSearchQueryBuilder $elasticSearchQueryBuilder
3540
*/
3641
public function execute($cacheResult = false)
3742
{
38-
return new ElasticSearchQueryResult($this);
43+
$queryHash = md5(json_encode($this->queryBuilder->getRequest()));
44+
if ($cacheResult === true && isset(self::$runtimeQueryResultCache[$queryHash])) {
45+
return self::$runtimeQueryResultCache[$queryHash];
46+
}
47+
$queryResult = new ElasticSearchQueryResult($this);
48+
self::$runtimeQueryResultCache[$queryHash] = $queryResult;
49+
return $queryResult;
3950
}
4051

4152
/**

Classes/Flowpack/ElasticSearch/ContentRepositoryAdaptor/Eel/ElasticSearchQueryBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ public function fetch()
670670
public function execute()
671671
{
672672
$elasticSearchQuery = new ElasticSearchQuery($this);
673-
$result = $elasticSearchQuery->execute();
673+
$result = $elasticSearchQuery->execute(true);
674674
return $result;
675675
}
676676

0 commit comments

Comments
 (0)