Aller au contenu

Middleware Compress ​

Ce middleware compresse le corps de la réponse selon l’en-tête de requête Accept-Encoding.

Information

Remarque : Sur Cloudflare Workers et Deno Deploy, le corps de la réponse est compressé automatiquement ; ce middleware n’est donc pas nécessaire.

Importation ​

ts
import { Hono } from 'hono'
import { compress } from 'hono/compress'

Utilisation ​

ts
const app = new Hono()

app.use(compress())

Options ​

facultatif encoding: 'gzip' | 'deflate' ​

Le format de compression autorisé pour la réponse : gzip ou deflate. Si cette option n’est pas définie, les deux sont autorisés et utilisés selon l’en-tête Accept-Encoding. gzip est prioritaire lorsque l’option n’est pas fournie et que le client indique les deux formats dans l’en-tête Accept-Encoding.

facultatif threshold: number ​

La taille minimale, en octets, à partir de laquelle compresser. La valeur par défaut est 1024 octets.

facultatif contentTypeFilter: RegExp | (contentType: string) => boolean ​

Une RegExp ou une fonction déterminant si la réponse doit être compressée d’après son Content-Type. Par défaut, une liste intégrée de types de contenu compressibles est utilisée.

Vous pouvez passer une RegExp pour ne compresser que les types de contenu correspondants :

ts
// Compress only JSON responses
app.use(compress({ contentTypeFilter: /^application\/json/ }))

Ou passer une fonction pour définir une logique personnalisée. La constante intégrée COMPRESSIBLE_CONTENT_TYPE_REGEX est également exportée afin de vous permettre d’étendre le comportement par défaut :

ts
import {
  compress,
  COMPRESSIBLE_CONTENT_TYPE_REGEX,
} from 'hono/compress'

// Compress the default Content-Types plus a custom one
app.use(
  compress({
    contentTypeFilter: (type) =>
      COMPRESSIBLE_CONTENT_TYPE_REGEX.test(type) ||
      type === 'application/x-myformat',
  })
)

Publié sous licence MIT.