Compression

Compression

The compression concern compresses content sent to the clients, if applicable. By default, gzip and Brotli are supported.

var content = Layout.Create()
                    .Add(CompressedContent.Default());

This concern is part of the default configuration and will automatically be added.

Custom Algorithms

To add a custom compression algorithm to the server, you can implement the ICompressionAlgorithm interface and register the implementing class with your server builder. For example, the following implementation will add support for the deflate algorithm, which is not provided by the server out of the box:

public class DeflateCompression : ICompressionAlgorithm
{

    public string Name => "deflate";

    public Priority Priority => Priority.Low;

    public IResponseContent Compress(IResponseContent content)
    {
        return new CompressedResponseContent(content, (target) => new DeflateStream(target, CompressionLevel.Fastest, false));
    }

}
                        
// registration
var server = Server.Create()
                   .Handler(...)
                   .Defaults(compression: false)
                   .Compression(CompressedContent.Default().Add(new DeflateCompression()));