Brotli

使用 Brotli 算法压缩文件

配置参数

extensions string[] *

The list of extensions this plugin applies to

Default:
[
  ".html", ".css",
  ".js",   ".mjs",
  ".svg",  ".json",
  ".xml",  ".txt"
]
quality number

Quality param between 0 and 11 (11 is the smallest but takes the longest to encode)

Default:
6

Brotli 是一种由 Google 开发的无损数据压缩算法,主要被 Web 服务器和 CDN 用于压缩 HTTP 内容。在 Web 上,它被用作 gzip 的替代品,因为它提供更好的总体压缩效果。

此插件会创建文件的预压缩版本。例如,除了 /index.html 之外,它还会创建一个压缩版本 /index.html.br

安装

在你的 _config.ts 文件中导入此插件以使用它:

import lume from "lume/mod.ts";
import brotli from "lume/plugins/brotli.ts";

const site = lume();

site.use(brotli());

export default site;

默认情况下,仅压缩某些基于文本的格式,例如 .html.css.js.svg.json 等。像图像或视频这样的二进制文件不会被压缩,因为它们大多数都有自己的压缩。使用 extensions 选项来配置你想压缩哪些扩展名:

site.use(brotli({
  extensions: [".html", ".css"],
}));

如何提供预压缩文件

如果你正在使用 Deno Deploy,你可以使用 precompress 中间件,它会在 .br 版本可用且浏览器支持的情况下自动提供该版本。

许多其他 Web 服务器也具有提供预压缩文件的选项,例如 Caddy,或者像 HonoFastifyKoa 这样的框架。