Macaron Documentation
  • Welcome
  • Starter Guide
  • Core Concepts
  • Core Services
  • Custom Services
  • Middlewares
    • Routing
    • Templating
    • Gzip
    • Localization
    • Data Binding and Validation
    • Cache
    • Captcha
    • Session
    • Cross-Site Request Forgery
    • Embed Binary Data
    • Serving Multiple Sites
  • FAQs
  • 简体中文
    • 初学者指南
    • 核心概念
    • 核心服务
    • 自定义服务
    • 中间件和辅助模块
      • 路由模块
      • 模板引擎
      • Gzip 压缩
      • 应用本地化
      • 数据绑定与验证
      • 缓存管理(Cache)
      • 验证码服务
      • 会话管理(Session)
      • 跨域请求攻击(CSRF)
      • 嵌入二进制数据
      • 服务多个站点
    • 常见问题
Powered by GitBook
On this page
  • 下载安装
  • 使用示例
  • 自定义选项

Was this helpful?

  1. 简体中文
  2. 中间件和辅助模块

Gzip 压缩

Previous模板引擎Next应用本地化

Last updated 5 years ago

Was this helpful?

中间件 gzip 为 的响应内容提供 Gzip 压缩。请确保在其它会向响应流写入内容的中间件之前注册该服务。

下载安装

go get github.com/go-macaron/gzip

使用示例

package main

import (
    "github.com/go-macaron/gzip"
    "gopkg.in/macaron.v1"
)

func main() {
    m := macaron.Classic()
    m.Use(gzip.Gziper())
    // 注册路由
    m.Run()
}

在这个例子中,静态资源不会被 Gzip 压缩,如果想压缩它们,则可以使用以下方法:

package main

import (
    "github.com/go-macaron/gzip"
    "gopkg.in/macaron.v1"
)

func main() {
    m := macaron.New()
    m.Use(macaron.Logger())
    m.Use(macaron.Recovery())
    m.Use(gzip.Gziper())
    m.Use(macaron.Static("public"))
    // 注册路由
    m.Run()
}

或者选择只压缩某一组路由的响应内容:

// ...

func main() {
    m := macaron.Classic()
    m.Group("/gzip", func() {
        // ...
    }, gzip.Gziper())
    // ...
    m.Run()
}

自定义选项

// ...
m.Use(gzip.Gziper(gzip.Options{
    // 压缩级别,可以是 DefaultCompression(-1)、ConstantCompression(-2)
    // 或介于包括 BestSpeed(1) 和 BestCompression(9) 在内,这两者之间的任意整数。
    // 默认为 4
    CompressionLevel: 4,
}))

该服务允许接受一个参数来进行自定义选项():

gzip.Options
GitHub
API 文档
Macaron 实例