From ab05ed73c5a861827bb140bc9c197b83cffe308d Mon Sep 17 00:00:00 2001 From: indykoning <15870933+indykoning@users.noreply.github.com> Date: Tue, 11 Feb 2025 16:03:32 +0100 Subject: [PATCH 1/4] Set etag and lastModified if available --- src/Structures/Page.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Structures/Page.php b/src/Structures/Page.php index afb23c50ac..9648992067 100644 --- a/src/Structures/Page.php +++ b/src/Structures/Page.php @@ -5,6 +5,7 @@ use ArrayAccess; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Responsable; +use Illuminate\Support\Carbon; use Illuminate\Support\Traits\ForwardsCalls; use JsonSerializable; use Statamic\Contracts\Auth\Protect\Protectable; @@ -417,7 +418,14 @@ public function site() public function toResponse($request) { if ($this->reference && $this->referenceExists()) { - return (new \Statamic\Http\Responses\DataResponse($this))->toResponse($request); + $response = (new \Statamic\Http\Responses\DataResponse($this))->toResponse($request); + + if ($updatedAt = $this->routeData()['updated_at'] ?? null) { + $response->setLastModified(Carbon::parse($updatedAt)); + } + + return $response + ->setEtag(md5($response->getContent() ?? '')); } throw new \LogicException('A page without a reference to an entry cannot be rendered.'); From bc204b0277ed6a8d5a1dbae87112c7003a775f87 Mon Sep 17 00:00:00 2001 From: indykoning <15870933+indykoning@users.noreply.github.com> Date: Wed, 26 Mar 2025 15:05:38 +0100 Subject: [PATCH 2/4] Removed last-modified header --- src/Structures/Page.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Structures/Page.php b/src/Structures/Page.php index 9648992067..e19ebdc5b4 100644 --- a/src/Structures/Page.php +++ b/src/Structures/Page.php @@ -419,13 +419,12 @@ public function toResponse($request) { if ($this->reference && $this->referenceExists()) { $response = (new \Statamic\Http\Responses\DataResponse($this))->toResponse($request); + + $response + ->setEtag(md5($response->getContent() ?? '')) + ->isNotModified($request); - if ($updatedAt = $this->routeData()['updated_at'] ?? null) { - $response->setLastModified(Carbon::parse($updatedAt)); - } - - return $response - ->setEtag(md5($response->getContent() ?? '')); + return $response; } throw new \LogicException('A page without a reference to an entry cannot be rendered.'); From 07682884c77205a4db8b92d9e33b773d7f304c85 Mon Sep 17 00:00:00 2001 From: indykoning <15870933+indykoning@users.noreply.github.com> Date: Wed, 26 Mar 2025 17:46:26 +0100 Subject: [PATCH 3/4] Check getContent first --- src/Structures/Page.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Structures/Page.php b/src/Structures/Page.php index e19ebdc5b4..f9e09157da 100644 --- a/src/Structures/Page.php +++ b/src/Structures/Page.php @@ -419,10 +419,12 @@ public function toResponse($request) { if ($this->reference && $this->referenceExists()) { $response = (new \Statamic\Http\Responses\DataResponse($this))->toResponse($request); - - $response - ->setEtag(md5($response->getContent() ?? '')) - ->isNotModified($request); + + if (($content = $response->getContent())) { + $response + ->setEtag(md5($content)) + ->isNotModified($request); + } return $response; } From 3417c4223b1fdeccafc9ef6a52826afc7db812b3 Mon Sep 17 00:00:00 2001 From: indykoning <15870933+indykoning@users.noreply.github.com> Date: Wed, 26 Mar 2025 17:49:13 +0100 Subject: [PATCH 4/4] Removed unused carbon import --- src/Structures/Page.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Structures/Page.php b/src/Structures/Page.php index f9e09157da..131f0a3b2e 100644 --- a/src/Structures/Page.php +++ b/src/Structures/Page.php @@ -5,7 +5,6 @@ use ArrayAccess; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Responsable; -use Illuminate\Support\Carbon; use Illuminate\Support\Traits\ForwardsCalls; use JsonSerializable; use Statamic\Contracts\Auth\Protect\Protectable;