middlewares/encoder

中间件,将响应体编码为 gzip 或 deflate

v2.1.1 2020-12-03 01:13 UTC

This package is auto-updated.

Last update: 2024-08-29 04:32:45 UTC


README

Latest Version on Packagist Software License Testing Total Downloads

如果存在 Accept-Encoding 头部,并且添加了 Content-Encoding 头部,则使用中间件将响应体编码为 gzipdeflate。该包拆分为以下组件

您可以使用 middlewares/negotiation 中的 ContentEncoding 组件来协商要使用的编码。

要求

安装

该包可以通过 Composer 以 middlewares/encoder 的方式安装和自动加载。

composer require middlewares/encoder

GzipEncoder

使用 gzencode 压缩响应体到 GZIP 格式,并添加头部 Content-Encoding: gzip

注意:只有当头部包含 Accept-Encoding 头中的值 gzip 时,才会对响应体进行编码。

Dispatcher::run([
	new Middlewares\GzipEncoder(),
]);

可选地,您可以提供一个 Psr\Http\Message\StreamFactoryInterface,它将用于创建响应体。如果未定义,则将使用 Middleware\Utils\Factory 自动检测。

$streamFactory = new MyOwnStreamFactory();

$encoder = new Middlewares\GzipEncoder($streamFactory);

DeflateEncoder

使用 gzdeflate 将响应体压缩为 Deflate 格式,并添加头部 Content-Encoding: deflate

注意:只有当头部包含 Accept-Encoding 头中的值 deflate 时,才会对响应体进行编码。

Dispatcher::run([
	new Middlewares\DeflateEncoder(),
]);

可选地,您可以提供一个 Psr\Http\Message\StreamFactoryInterface,它将用于创建响应体。如果未定义,则将使用 Middleware\Utils\Factory 自动检测。

$streamFactory = new MyOwnStreamFactory();

$encoder = new Middlewares\DeflateEncoder($streamFactory);

常见选项

contentType

此选项允许覆盖用于检测哪些资源已压缩的默认模式。

默认模式检测以下 MIME 类型 text/*application/jsonimage/svg+xml 和空内容类型作为可压缩的。如果模式以反斜杠 / 开头,则将其作为正则表达式测试,否则进行不区分大小写的字符串比较。

Dispatcher::run([
	(new Middlewares\DeflateEncoder())
            ->contentType(
                    '/^application\/pdf$/', // Regular Expression
                    'text/csv' // Text Pattern
            )
]);

有关最近更改的更多信息,请参阅 CHANGELOG,有关贡献详情,请参阅 CONTRIBUTING

MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE