diff --git a/frameworks/mark/Dockerfile b/frameworks/mark/Dockerfile index dd1ad6eb..80f305be 100644 --- a/frameworks/mark/Dockerfile +++ b/frameworks/mark/Dockerfile @@ -11,7 +11,8 @@ RUN apt-get install -yqq php8.5-cli php8.5-xml php8.5-zip php8.5-pgsql >/dev/nul COPY --from=composer/composer:latest-bin --link /composer /usr/local/bin/composer RUN apt-get install -y php-pear php8.5-dev libevent-dev git >/dev/null && \ - pecl install event-3.1.4 > /dev/null && echo "extension=event.so" > /etc/php/8.5/cli/conf.d/30-event.ini + pecl install event-3.1.4 >/dev/null && echo "extension=event.so" > /etc/php/8.5/cli/conf.d/30-event.ini && \ + pecl install brotli >/dev/null && echo "extension=brotli.so" > /etc/php/8.5/cli/conf.d/30-brotli.ini WORKDIR /mark COPY composer.json . diff --git a/frameworks/mark/handlers.php b/frameworks/mark/handlers.php index a8ff4392..959b3f92 100644 --- a/frameworks/mark/handlers.php +++ b/frameworks/mark/handlers.php @@ -36,10 +36,22 @@ function json($request, $count) $total[] = $item; } + $result = json_encode(['items' => $total, 'count' => $count], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $header = []; + if($encoding = $request->header('accept-encoding', '')) { + if(str_contains($encoding, 'br')) { + $result = brotli_compress($result, 1); + $header = ['Content-Encoding' => 'br']; + } elseif (str_contains($encoding, 'gzip')) { + $result = gzencode($result, 1); + $header = ['Content-Encoding' => 'br']; + } + } + return new Response ( 200, - ['Content-Type' => 'application/json'], - json_encode(['items' => $total, 'count' => $count], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) + ['Content-Type' => 'application/json'] + $header, + $result ); } diff --git a/frameworks/mark/meta.json b/frameworks/mark/meta.json index 552b7b77..bfcfe69f 100644 --- a/frameworks/mark/meta.json +++ b/frameworks/mark/meta.json @@ -11,6 +11,8 @@ "pipelined", "limited-conn", "json", + "json-comp", + "noisy", "static", "api-4", "api-16",