From 49814c4b398d4eccd263111e1318e4a78ece6c19 Mon Sep 17 00:00:00 2001 From: Alexander Shvets Date: Wed, 12 Sep 2018 18:18:37 +0300 Subject: [PATCH] Added cache-control tags to static content. --- src/Builders/StaticCache.php | 14 ++++++++------ src/Middleware/StaticCache.php | 8 +++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Builders/StaticCache.php b/src/Builders/StaticCache.php index 50e9293..1e388d8 100644 --- a/src/Builders/StaticCache.php +++ b/src/Builders/StaticCache.php @@ -22,17 +22,19 @@ public function __construct() */ public function handleRequest(Request $request, Response $response) { - if (config('app.debug', false)) return; - if (!auth()->guest()) return; - if (!$request->route()->parameter('cache', true)) return; - if ($request->method() != 'GET') return; - if ($request->query()) return; - if ($response->getStatusCode() != 200) return; + if (config('app.debug', false)) return false; + if (!auth()->guest()) return false; + if (!$request->route()->parameter('cache', true)) return false; + if ($request->method() != 'GET') return false; + if ($request->query()) return false; + if ($response->getStatusCode() != 200) return false; $path = $request->path(); $content = $response->getContent(); $content_type = $response->headers->get('Content-Type'); $this->write($path, $content, starts_with($content_type, 'text/html')); + + return true; } /** diff --git a/src/Middleware/StaticCache.php b/src/Middleware/StaticCache.php index 6e2ebec..8657c01 100755 --- a/src/Middleware/StaticCache.php +++ b/src/Middleware/StaticCache.php @@ -22,8 +22,14 @@ public function handle($request, Closure $next) /* @var $staticCache \ShvetsGroup\JetPages\Builders\StaticCache */ $staticCache = app('jetpages.staticCache'); - $staticCache->handleRequest($request, $response); + $result = $staticCache->handleRequest($request, $response); + if ($result && $response->isCacheable()) { + if ($response->getMaxAge() === null) { + $response->setExpires(new \DateTime("+1 hour")); + } + $response->setPublic(); + } return $response; }