Documentation
¶
Overview ¶
Package cachecompress creates a compressed cache of static files based on an http.FS. It is modified from https://github.com/go-chi/chi Compressor middleware. See the LICENSE file in this directory for copyright information.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Compressor ¶
type Compressor struct {
// contains filtered or unexported fields
}
Compressor represents a set of encoding configurations.
func NewCompressor ¶
func NewCompressor(logger slog.Logger, level int, cacheDir string, orig http.FileSystem) *Compressor
NewCompressor creates a new Compressor that will handle encoding responses.
The level should be one of the ones defined in the flate package. The types are the content types that are allowed to be compressed.
func (*Compressor) ServeHTTP ¶
func (c *Compressor) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP returns the response from the orig file system, compressed if possible.
func (*Compressor) SetEncoder ¶
func (c *Compressor) SetEncoder(encoding string, fn EncoderFunc)
SetEncoder can be used to set the implementation of a compression algorithm.
The encoding should be a standardized identifier. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
For example, add the Brotli algorithm:
import brotli_enc "gopkg.in/kothar/brotli-go.v0/enc"
compressor := middleware.NewCompressor(5, "text/html")
compressor.SetEncoder("br", func(w io.Writer, level int) io.Writer {
params := brotli_enc.NewBrotliParams()
params.SetQuality(level)
return brotli_enc.NewBrotliWriter(params, w)
})
type EncoderFunc ¶
type EncoderFunc func(w io.Writer, level int) io.WriteCloser
An EncoderFunc is a function that wraps the provided io.Writer with a streaming compression algorithm and returns it.
In case of failure, the function should return nil.