christoph-kluge / reactphp-http-response-compression-middleware
为ReactPHP HTTP服务器提供响应压缩的中间件
1.0.0
2019-03-03 12:16 UTC
Requires
- php: >=5.6.0
- clue/zlib-react: ^0.2
- psr/http-message: ^1.0
- react/promise: ^2.5
Requires (Dev)
- phpunit/phpunit: ^4.8.10||^5.0
- react/http: dev-master
- ringcentral/psr7: ^1.2
This package is auto-updated.
Last update: 2024-08-25 09:10:02 UTC
README
安装
要通过Composer安装,请使用以下命令,它将自动检测最新版本并将其与^
绑定。
composer require christoph-kluge/reactphp-http-response-compression-middleware
此中间件将检测请求是否可压缩,并压缩响应体并添加相关头信息。重负载由clue/php-zlib-react完成,谢谢!
使用方法
$server = new Server(new MiddlewareRunner([ new ResponseCompressionMiddleware([ new CompressionGzipHandler(), new CompressionDeflateHandler(), ]), function (ServerRequestInterface $request, callable $next) { return new Response(200, ['Content-Type' => 'application/json'], json_encode([ 'some' => 'nice', 'json' => 'values', ])); }, ]));
响应压缩的MIME/内容类型检测
默认检测
默认处理程序将默认使用DefaultRegexDetecor
通过一组正则表达式来识别可压缩的内容类型。这些正则表达式是
// DefaultRegexDetector.php -> used in __construct() new RegexDetector([ '/^text\/[a-z-\+]+$/', // text/* '/^application\/json$/', // application/json '/^application\/xml$/', // application/xml '/^[a-z-\+]+\/[a-z-\+]+\+json$/', // */*+json '/^[a-z-\+]+\/[a-z-\+]+\+xml$/', // */*+xml ]);
可用的检测器
目前有以下可用的检测器
ArrayDetector
:它将接受一个白名单来检查MIME类型RegexDetecor
:它将接受一个白名单来检查正则表达式
new CompressionGzipHandler(new ArrayDetector[ 'text/html', ]), new CompressionGzipHandler(new RegexDetector[ '/^text\/[a-z]+$/', ]),
想实现自定义检测器吗?
如果您想添加对响应MIME类型的自定义检测,则可以简单地将实现MimeDetectorInterface
的对象作为第一个参数传递。
new CompressionGzipHandler(new class implements MimeDetectorInterface { public function isCompressible($mime) { // your custom magic here.. return true; } }),
许可证
MIT许可证 (MIT)
版权所有 © 2017 Christoph Kluge
特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许获得软件的人执行上述操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,是否由软件或软件的使用或其他交易而产生。