Skip to content

Commit 71ff0fe

Browse files
authored
fix: refactor Request scope cache feature (#415)
remove unnecessary middleware that was affecting performance
1 parent d0c5913 commit 71ff0fe

File tree

5 files changed

+17
-90
lines changed

5 files changed

+17
-90
lines changed

app/Http/Kernel.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class Kernel extends HttpKernel
3939
\App\Http\Middleware\SecurityHTTPHeadersWriterMiddleware::class,
4040
\App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests::class,
4141
\App\Http\Middleware\DoctrineMiddleware::class,
42-
\App\Http\Middleware\RequestScopedCacheMiddleware::class,
4342
];
4443

4544
/**

app/Http/Middleware/RequestScopedCacheMiddleware.php

Lines changed: 0 additions & 50 deletions
This file was deleted.

app/ModelSerializers/Summit/Registration/SummitTicketTypeSerializer.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
**/
1414

1515
use App\ModelSerializers\Traits\RequestScopedCache;
16-
use Libs\ModelSerializers\AbstractSerializer;
1716
use models\summit\SummitTicketType;
1817

1918
/**
@@ -76,4 +75,4 @@ public function serialize($expand = null, array $fields = [], array $relations =
7675
});
7776

7877
}
79-
}
78+
}

app/ModelSerializers/Traits/RequestScopedCache.php

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
trait RequestScopedCache
2525
{
2626

27+
static function store(){
28+
return Cache::store(config('cache.request_scope_cache_store', 'array'));
29+
}
2730
/**
2831
* @return string
2932
*/
@@ -36,34 +39,12 @@ static function getScopeId():string{
3639
$time = time();
3740
$sessionId = Session::getId();
3841
$uuid = Uuid::uuid4()->toString();
39-
/*Log::debug
40-
(
41-
sprintf
42-
(
43-
"RequestScopedCache::getScopeId scope is empty ip %s time %s sessionId %s uuid%s .",
44-
$ip , $time, $sessionId, $uuid
45-
)
46-
);*/
47-
4842
$requestId = md5(sprintf("%s.%s.%s.%s", $ip, $time, $sessionId, $uuid));
49-
50-
/*Log::debug
51-
(
52-
sprintf
53-
(
54-
"RequestScopedCache::getScopeId setting request id %s.",
55-
$requestId
56-
)
57-
);*/
58-
5943
$request->headers->set('X-Request-ID', $requestId);
60-
6144
$_SERVER['HTTP_X_REQUEST_ID'] = $requestId;
6245

6346
}
6447

65-
//Log::debug(sprintf("RequestScopedCache::getScopeId retrieving request id %s" , $requestId));
66-
6748
return $requestId;
6849
}
6950

@@ -86,23 +67,21 @@ function getRequestKey(string $serializeName, int $id, ?string $expand = null, a
8667
* @return mixed
8768
*/
8869
function cache(string $key, Closure $callback){
70+
$key = self::getScopeId().':'.$key;
71+
$store = self::store();
8972

90-
$scope = self::getScopeId();
73+
$computed = false;
9174

92-
//Log::debug(sprintf("RequestScopedCache::cache scope %s key %s.", $scope, $key));
75+
$value = $store->remember($key, now()->addSeconds(30), function () use ($callback, &$computed, $key) {
76+
$computed = true; // closure ran => MISS
77+
Log::debug('RequestScopedCache MISS', ['key' => $key]);
78+
return $callback();
79+
});
9380

94-
$res = Cache::tags($scope)->get($key);
95-
if(!empty($res)){
96-
$json_res = gzinflate($res);
97-
$res = json_decode($json_res,true);
98-
//Log::debug(sprintf("RequestScopedCache::cache scope %s key %s cache hit res %s.", $scope, $key, $json_res));
99-
return $res;
81+
if (!$computed) {
82+
Log::debug('RequestScopedCache HIT', ['key' => $key]);
10083
}
10184

102-
$res = $callback();
103-
$json = json_encode($res);
104-
//Log::debug(sprintf("RequestScopedCache::cache scope %s key %s res %s adding to cache.", $scope, $key, $json));
105-
Cache::tags($scope)->add($key, gzdeflate($json, 9));
106-
return $res;
85+
return $value;
10786
}
108-
}
87+
}

config/cache.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,5 @@
8888
*/
8989

9090
'prefix' => 'laravel',
91-
91+
'request_scope_cache_store' => env('REQUEST_SCOPE_CACHE_STORE', 'array'),
9292
];

0 commit comments

Comments
 (0)