发布 1.0.0 版本:用于 Gin 和 net/http 的 gzip 中间件,再也不担心返回的 JSON 太大了

2020-04-26 10:54:34 +08:00
 nanmu42

一个适用于Ginnet/http的 gzip 中间件,可直接用也可定制参数和过滤器,gzip 压缩你的返回。

项目地址: https://github.com/nanmu42/gzip

p.s.

gzip 一般可以将文本返回(例如 JSON )压缩到 30%~70%.

有的人喜欢在反向代理上做压缩,有的人喜欢在程序里就压缩,萝卜青菜各有所爱。:)

3717 次点击
所在节点    Go 编程语言
23 条回复
nanmu42
2020-04-27 09:31:34 +08:00
@heiheidewo @Allianzcortex
gzip 压缩本身只是调用官方库,不难。要考虑的主演是另外的问题:
客户端支持解压缩吗?(不支持就不能压缩)
哪些内容类型需要压缩?判断基于 MIME 还是扩展名?(都要判断)
数据流是不是已经压缩过?(看 header )
返回最少要多大才值得压缩?(返回太小,压缩后更大,得不偿失)
使用哪一个 gzip 级别?( cloudflare 做了一堆实验,nginx 直接取 1,这个问题是玄学)
流式传输的返回该如何判断返回大小?( buffer,没别的办法,content-length 这时不存在)

主要是脏活累活,细节问题,性能问题( GC 要友好)。

gin-contrib 只是看上去好,它 issue 里的问题其实就是上面这些点的体现,关键是官方并不怎么上心…… (他 issue 的链接请看楼上,v2 系统不让我再发一遍了)
nanmu42
2020-04-27 09:34:30 +08:00
@solos 中间件默认的配置不会盲目压缩,比如返回太小不压缩(得不偿失),客户端不支持不压缩等等。详情可以看下 README 里的默认配置。
xcstream
2020-04-30 02:38:32 +08:00
有的人喜欢在数据库里做计算,有人的人喜欢在程序里做计算。(滑稽)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX