puklipo / laravel-vapor-gzip
Laravel Vapor 的 Gzip 响应中间件
1.3.0
2024-03-26 03:15 UTC
Requires
- php: ^8.1
- ext-zlib: *
- illuminate/http: ^10.0||^11.0
README
要求
- PHP ^8.1 (+ext-zlib)
- Laravel ^10.x
安装
composer require puklipo/laravel-vapor-gzip
Laravel 11 (Slim 骨架)
添加到 bootstrap/app.php
use Puklipo\Vapor\Middleware\GzipResponse::class; ->withMiddleware(function (Middleware $middleware) { $middleware->append(GzipResponse::class); })
Laravel 10
添加到 app/Http/Kernel.php
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+ \Puklipo\Vapor\Middleware\GzipResponse::class,
];
自定义 "何时使用 gzip 编码?"
App\Providers\AppServiceProvider
use Illuminate\Http\Request; use Puklipo\Vapor\Middleware\GzipResponse; public function boot(): void { GzipResponse::encodeWhen(function (Request $request, mixed $response): bool { return in_array('gzip', $request->getEncodings()) && $request->method() === 'GET' && function_exists('gzencode') && ! $response->headers->contains('Content-Encoding', 'gzip') && ! $response instanceof BinaryFileResponse; }); }
当此包被弃用时
您可以直接使用 GzipResponse.php。将其复制到您的 Laravel 项目中,并更改命名空间。
namespace App\Http\Middleware;
许可证
MIT