压缩内容
Web请求响应体积太大时,会消耗额外的服务器带宽以及花费更多时间用于内容的下载,甚至影响到用户的访问体验。因此我们希望使用gzip或者brotli算法压缩响应内容的体积。
安装
bash
pnpm add @aomex/compress
使用
typescript
// src/web.ts
import { WebApp } from '@aomex/core';
import { compress } from '@aomex/compress';
const app = new WebApp({
mount: [compress()],
});
参数
filter
类型: (contentType: string) => boolean
默认值: compressible
根据响应的content-type
确定是否需要压缩。如果存在ctx.needCompress=true
,则该属性会被直接忽略
threshold
类型: number | string
默认值: 1024
最低要求的压缩体积。数字或者不带单位时,单位为byte
。也可以传入带单位的字符串。
- 1259
- '1024'
- '100byte'
- '23kb'
- '1024mb'
- '3gb'
上下文
needCompress
类型: boolean
默认值: false
插件暴露出来的属性,允许响应强制开启
压缩功能
typescript
export const router = new Router();
router.get('/users', {
action(ctx) {
ctx.needCompress = true;
ctx.send('small');
},
});