createGzipMiddleware function

Middleware createGzipMiddleware({
  1. int minimalGzipContentLength = _defaultMinimalGzipContentLength,
  2. _AlreadyCompressedContentType? alreadyCompressedContentType,
  3. int compressionLevel = _defaultGzipCompressionLevel,
  4. bool addCompressionRatioHeader = true,
  5. bool addServerTiming = false,
  6. String serverTimingEntryName = 'gzip',
})

Converts a Response to a gzip encoding (only if the Request acceptsGzipEncoding).

  • minimalGzipContentLength is the minimal size for a content to be compressed. Default to 512.
  • alreadyCompressedContentType is a function that returns true if the passed contentType is already compressed, like a PNG, JPEG or Zip. Defaults to isAlreadyCompressedContentType.
  • The compressionLevel for the gzip encoder. Default: 4
  • If addCompressionRatioHeader is true, add header X-Compression-Ratio.
  • If addServerTiming is true, include or append Gzip encoding timing to the server-timing header.
  • serverTimingEntryName is the entry name to be used in the server-timing header.

Implementation

Middleware createGzipMiddleware({
  int minimalGzipContentLength = _defaultMinimalGzipContentLength,
  _AlreadyCompressedContentType? alreadyCompressedContentType,
  int compressionLevel = _defaultGzipCompressionLevel,
  bool addCompressionRatioHeader = true,
  bool addServerTiming = false,
  String serverTimingEntryName = 'gzip',
}) {
  return (Handler innerHandler) {
    return (request) {
      if (!acceptsGzipEncoding(request)) {
        return innerHandler(request);
      }
      return Future.sync(() => innerHandler(request))
          .then((response) => gzipEncodeResponse(
                response,
                minimalGzipContentLength: minimalGzipContentLength,
                alreadyCompressedContentType: alreadyCompressedContentType,
                compressionLevel: compressionLevel,
                addCompressionRatioHeader: addCompressionRatioHeader,
                addServerTiming: addServerTiming,
                serverTimingEntryName: serverTimingEntryName,
              ));
    };
  };
}