Documentation ¶
Overview ¶
Package gzip implements gzip middleware for Gin and net/http.
* introduction: https://github.com/nanmu42/gzip
* examples: https://github.com/nanmu42/gzip/tree/master/examples
Index ¶
Constants ¶
const ( NoCompression = gzip.NoCompression BestSpeed = gzip.BestSpeed BestCompression = gzip.BestCompression DefaultCompression = gzip.DefaultCompression HuffmanOnly = gzip.HuffmanOnly // Stateless will do compression but without maintaining any state // between Write calls, so long running responses will not take memory. // There will be no memory kept between Write calls, // but compression and speed will be suboptimal. // Because of this, the size of actual Write calls will affect output size. Stateless = gzip.StatelessCompression )
These constants are copied from the gzip package
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommonRequestFilter ¶
type CommonRequestFilter struct{}
CommonRequestFilter judge via common easy criteria like http method, accept-encoding header, etc.
func NewCommonRequestFilter ¶
func NewCommonRequestFilter() *CommonRequestFilter
NewCommonRequestFilter ...
func (*CommonRequestFilter) ShouldCompress ¶
func (c *CommonRequestFilter) ShouldCompress(req *http.Request) bool
ShouldCompress implements RequestFilter interface
type Config ¶
type Config struct { // gzip compression level to use, // valid value: -3 => 9. // // see https://golang.org/pkg/compress/gzip/#NewWriterLevel CompressionLevel int // Minimum content length to trigger gzip, // the unit is in byte. // // When `Content-Length` is not available, handler may buffer your writes to // decide if its big enough to do a meaningful compression. // A high `MinContentLength` may bring memory overhead, // although the handler tries to be smart by reusing buffers // and testing if `len(data)` of the first // `http.ResponseWriter.Write(data []byte)` calling suffices or not. MinContentLength int64 // Filters are applied in the sequence here RequestFilter []RequestFilter // Filters are applied in the sequence here ResponseHeaderFilter []ResponseHeaderFilter }
Config is used in Handler initialization
type ContentTypeFilter ¶
ContentTypeFilter judge via the response content type
Omit this filter if you want to compress all content type.
func DefaultContentTypeFilter ¶
func DefaultContentTypeFilter() *ContentTypeFilter
DefaultContentTypeFilter permits
func NewContentTypeFilter ¶
func NewContentTypeFilter(types []string) *ContentTypeFilter
NewContentTypeFilter ...
func (*ContentTypeFilter) ShouldCompress ¶
func (e *ContentTypeFilter) ShouldCompress(header http.Header) bool
ShouldCompress implements RequestFilter interface
type ExtensionFilter ¶
ExtensionFilter judge via the extension in path
Omit this filter if you want to compress all extension.
func DefaultExtensionFilter ¶
func DefaultExtensionFilter() *ExtensionFilter
DefaultExtensionFilter permits
func NewExtensionFilter ¶
func NewExtensionFilter(extensions []string) *ExtensionFilter
NewExtensionFilter returns a extension or panics
func (*ExtensionFilter) ShouldCompress ¶
func (e *ExtensionFilter) ShouldCompress(req *http.Request) bool
ShouldCompress implements RequestFilter interface
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler implement gzip compression for gin and net/http
func DefaultHandler ¶
func DefaultHandler() *Handler
DefaultHandler creates a gzip handler to take care of response compression, with meaningful preset.
func NewHandler ¶
NewHandler initialized a costumed gzip handler to take care of response compression.
config must not be modified after calling on NewHandler()
type RequestFilter ¶
type RequestFilter interface { // ShouldCompress decide whether or not to compress response, // judging by request ShouldCompress(req *http.Request) bool }
RequestFilter decide whether or not to compress response judging by request
type ResponseHeaderFilter ¶
type ResponseHeaderFilter interface { // ShouldCompress decide whether or not to compress response, // judging by response header ShouldCompress(header http.Header) bool }
ResponseHeaderFilter decide whether or not to compress response judging by response header
type SkipCompressedFilter ¶
type SkipCompressedFilter struct{}
SkipCompressedFilter judges whether content has been already compressed
func NewSkipCompressedFilter ¶
func NewSkipCompressedFilter() *SkipCompressedFilter
NewSkipCompressedFilter ...
func (*SkipCompressedFilter) ShouldCompress ¶
func (s *SkipCompressedFilter) ShouldCompress(header http.Header) bool
ShouldCompress implements ResponseHeaderFilter interface
Content-Encoding: https://tools.ietf.org/html/rfc2616#section-3.5