compress

响应数据压缩中间件,可对特定数据类型、数据长度的响应数据做压缩处理。默认支持gzip压缩,可扩展更多的压缩方式,如:brotli,zstd等。

Compressor

实现自定义的压缩主要实现三下方法:

  • Accept 判断该压缩是否支持该压缩,根据请求头以及响应数据大小
  • Compress 数据压缩方法
  • Pipe 数据Pipe处理

Example

  1. package main
  2. import (
  3. "bytes"
  4. "github.com/vicanso/elton"
  5. "github.com/vicanso/elton/middleware"
  6. )
  7. func main() {
  8. e := elton.New()
  9. e.Use(middleware.NewDefaultCompress())
  10. e.Use(middleware.NewDefaultResponder())
  11. e.GET("/", func(c *elton.Context) error {
  12. b := new(bytes.Buffer)
  13. for i := 0; i < 1000; i++ {
  14. b.WriteString("Hello, World!")
  15. }
  16. c.Body = &struct {
  17. Message string
  18. }{
  19. b.String(),
  20. }
  21. return nil
  22. })
  23. err := e.ListenAndServe(":3000")
  24. if err != nil {
  25. panic(err)
  26. }
  27. }