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, CompressionLevel level)
{
return new CompressedResponseContent(content, (target) => new DeflateStream(target, level, false));
}
}
// registration
var server = Server.Create()
.Handler(...)
.Defaults(compression: false)
.Compression(CompressedContent.Default().Add(new DeflateCompression()));