diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index f900f9170..5756af407 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -39,7 +39,6 @@ class Kernel extends HttpKernel \App\Http\Middleware\SecurityHTTPHeadersWriterMiddleware::class, \App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests::class, \App\Http\Middleware\DoctrineMiddleware::class, - \App\Http\Middleware\RequestScopedCacheMiddleware::class, ]; /** diff --git a/app/Http/Middleware/RequestScopedCacheMiddleware.php b/app/Http/Middleware/RequestScopedCacheMiddleware.php deleted file mode 100644 index c8a27eb06..000000000 --- a/app/Http/Middleware/RequestScopedCacheMiddleware.php +++ /dev/null @@ -1,50 +0,0 @@ -getMethod() !== 'GET') { - // short circuit - //Log::debug('RequestScopedCacheMiddleware::handle method is not GET'); - return $next($request); - } - - $response = $next($request); - - // clear all related to current session - //Log::debug(sprintf( 'RequestScopedCacheMiddleware::handle clearing cache scope %s', $scope)); - Cache::tags($scope)->flush(); - return $response; - } -} \ No newline at end of file diff --git a/app/ModelSerializers/Summit/Registration/SummitTicketTypeSerializer.php b/app/ModelSerializers/Summit/Registration/SummitTicketTypeSerializer.php index a9b7a06c7..f388a2837 100644 --- a/app/ModelSerializers/Summit/Registration/SummitTicketTypeSerializer.php +++ b/app/ModelSerializers/Summit/Registration/SummitTicketTypeSerializer.php @@ -13,7 +13,6 @@ **/ use App\ModelSerializers\Traits\RequestScopedCache; -use Libs\ModelSerializers\AbstractSerializer; use models\summit\SummitTicketType; /** @@ -76,4 +75,4 @@ public function serialize($expand = null, array $fields = [], array $relations = }); } -} \ No newline at end of file +} diff --git a/app/ModelSerializers/Traits/RequestScopedCache.php b/app/ModelSerializers/Traits/RequestScopedCache.php index 6d3e3d1d5..751627e96 100644 --- a/app/ModelSerializers/Traits/RequestScopedCache.php +++ b/app/ModelSerializers/Traits/RequestScopedCache.php @@ -24,6 +24,9 @@ trait RequestScopedCache { + static function store(){ + return Cache::store(config('cache.request_scope_cache_store', 'array')); + } /** * @return string */ @@ -36,34 +39,12 @@ static function getScopeId():string{ $time = time(); $sessionId = Session::getId(); $uuid = Uuid::uuid4()->toString(); - /*Log::debug - ( - sprintf - ( - "RequestScopedCache::getScopeId scope is empty ip %s time %s sessionId %s uuid%s .", - $ip , $time, $sessionId, $uuid - ) - );*/ - $requestId = md5(sprintf("%s.%s.%s.%s", $ip, $time, $sessionId, $uuid)); - - /*Log::debug - ( - sprintf - ( - "RequestScopedCache::getScopeId setting request id %s.", - $requestId - ) - );*/ - $request->headers->set('X-Request-ID', $requestId); - $_SERVER['HTTP_X_REQUEST_ID'] = $requestId; } - //Log::debug(sprintf("RequestScopedCache::getScopeId retrieving request id %s" , $requestId)); - return $requestId; } @@ -86,23 +67,21 @@ function getRequestKey(string $serializeName, int $id, ?string $expand = null, a * @return mixed */ function cache(string $key, Closure $callback){ + $key = self::getScopeId().':'.$key; + $store = self::store(); - $scope = self::getScopeId(); + $computed = false; - //Log::debug(sprintf("RequestScopedCache::cache scope %s key %s.", $scope, $key)); + $value = $store->remember($key, now()->addSeconds(30), function () use ($callback, &$computed, $key) { + $computed = true; // closure ran => MISS + Log::debug('RequestScopedCache MISS', ['key' => $key]); + return $callback(); + }); - $res = Cache::tags($scope)->get($key); - if(!empty($res)){ - $json_res = gzinflate($res); - $res = json_decode($json_res,true); - //Log::debug(sprintf("RequestScopedCache::cache scope %s key %s cache hit res %s.", $scope, $key, $json_res)); - return $res; + if (!$computed) { + Log::debug('RequestScopedCache HIT', ['key' => $key]); } - $res = $callback(); - $json = json_encode($res); - //Log::debug(sprintf("RequestScopedCache::cache scope %s key %s res %s adding to cache.", $scope, $key, $json)); - Cache::tags($scope)->add($key, gzdeflate($json, 9)); - return $res; + return $value; } -} \ No newline at end of file +} diff --git a/config/cache.php b/config/cache.php index 1e63fd530..0e5a7f57a 100644 --- a/config/cache.php +++ b/config/cache.php @@ -83,5 +83,5 @@ */ 'prefix' => 'laravel', - + 'request_scope_cache_store' => env('REQUEST_SCOPE_CACHE_STORE', 'array'), ];