From 5ff19019d98b9f3e704ba47457c32dd2f591cc0c Mon Sep 17 00:00:00 2001 From: Tim Kelty Date: Tue, 19 Dec 2023 23:51:53 -0500 Subject: [PATCH 1/2] gzip response --- src/web/ResponseBehavior.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/web/ResponseBehavior.php b/src/web/ResponseBehavior.php index 4a07f1b..5f3062f 100644 --- a/src/web/ResponseBehavior.php +++ b/src/web/ResponseBehavior.php @@ -34,9 +34,25 @@ public function events(): array ]; } + public function gzip(): void + { + $accepts = preg_split( + '/\s*\,\s*/', + Craft::$app->getRequest()->getHeaders()->get('Accept-Encoding') ?? '' + ); + + if (Collection::make($accepts)->doesntContain('gzip')) { + return; + } + + $this->owner->content = gzencode($this->owner->content, 9); + $this->owner->getHeaders()->set('Content-Encoding', 'gzip'); + } + public function afterPrepare(Event $event): void { $this->joinMultiValueHeaders(); + $this->gzip(); if ($this->owner->stream) { $this->serveBinaryFromS3(); From f59746b8481155634f03a9a02916b121eb6ab9e0 Mon Sep 17 00:00:00 2001 From: Tim Kelty Date: Wed, 20 Dec 2023 13:12:42 -0500 Subject: [PATCH 2/2] put conditional in fn --- src/web/ResponseBehavior.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/web/ResponseBehavior.php b/src/web/ResponseBehavior.php index 5f3062f..f703ab4 100644 --- a/src/web/ResponseBehavior.php +++ b/src/web/ResponseBehavior.php @@ -53,10 +53,7 @@ public function afterPrepare(Event $event): void { $this->joinMultiValueHeaders(); $this->gzip(); - - if ($this->owner->stream) { - $this->serveBinaryFromS3(); - } + $this->serveBinaryFromS3(); } /** @@ -64,6 +61,10 @@ public function afterPrepare(Event $event): void */ protected function serveBinaryFromS3(): void { + if (!$this->owner->stream) { + return; + } + /** @var TmpFs $fs */ $fs = Craft::createObject([ 'class' => TmpFs::class,