support zstandard encoding
1 file changed, 15 insertions(+), 1 deletion(-)
changed files
M internal/storage/files/writer.go → internal/storage/files/writer.go
@@ -13,6 +13,7 @@ "go.alanpearce.eu/website/internal/storage" "go.alanpearce.eu/x/log" "github.com/andybalholm/brotli" + "github.com/klauspost/compress/zstd" "gitlab.com/tozd/go/errors" )@@ -104,6 +105,15 @@ return brotli.NewWriterLevel(f, brotliLevel), nil } +func openFileZstd(filename string) (*zstd.Encoder, error) { + f, err := openFileWrite(filename + ".zstd") + if err != nil { + return nil, err + } + + return zstd.NewWriter(f) +} + func multiOpenFile(filename string) (*multibuf.WriteCloser, error) { r, err := openFileWrite(filename) if err != nil {@@ -117,8 +127,12 @@ br, err := openFileBrotli(filename) if err != nil { return nil, err } + zst, err := openFileZstd(filename) + if err != nil { + return nil, err + } - return multibuf.NewWriteCloser(r, gz, br), nil + return multibuf.NewWriteCloser(r, gz, br, zst), nil } func (f *Files) OpenFileAndVariants(filename string) (io.WriteCloser, error) {