Zum Inhalt springen

Compress-Middleware ​

Diese Middleware komprimiert den Antwort-Body entsprechend dem Anfrage-Header Accept-Encoding.

Info

Hinweis: Auf Cloudflare Workers und Deno Deploy wird der Antwort-Body automatisch komprimiert. Deshalb musst du diese Middleware dort nicht verwenden.

Import ​

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

Verwendung ​

ts
const app = new Hono()

app.use(compress())

Optionen ​

optional encoding: 'gzip' | 'deflate' ​

Das für die Antwortkomprimierung zulässige Verfahren: entweder gzip oder deflate. Wenn nicht angegeben, sind beide erlaubt und werden anhand des Headers Accept-Encoding ausgewählt. Wenn diese Option fehlt und der Client beide im Header Accept-Encoding angibt, wird gzip bevorzugt.

optional threshold: number ​

Die Mindestgröße für die Komprimierung in Bytes. Der Standardwert ist 1024 Bytes.

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

Ein RegExp oder eine Funktion, die anhand des Content-Type entscheidet, ob die Antwort komprimiert wird. Standardmäßig wird eine integrierte Liste komprimierbarer Content-Types verwendet.

Du kannst einen RegExp übergeben, um nur passende Content-Types zu komprimieren:

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

Oder übergib eine Funktion für eigene Logik. Der integrierte COMPRESSIBLE_CONTENT_TYPE_REGEX wird ebenfalls exportiert, damit du das Standardverhalten erweitern kannst:

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',
  })
)

Veröffentlicht unter der MIT-Lizenz.