在 go web 应用程序的上下文中,我使用响应缓存并压缩它们,因此我节省了带宽(响应更大)。我正在使用框架和压缩gin-gonic
包。gzip
这个包工作得很好,可以满足我接收和回复 gzip 压缩正文所需的一切。这几行就足够了:
router := gin.Default() router.Use(gzip.Gzip(gzip.DefaultCompression))
一切都是魔法。现在,我还使用存储响应的缓存。为了节省空间和CPU,我想将已经压缩的响应存储在缓存中,所以我也不重复压缩。作为包装 HTTP 正文处理的中间件,gzip
透明地解压缩请求并压缩响应。然而,在我的处理程序级别,我希望获得响应的压缩表示,以便我可以将其存储到我的缓存中。另外,我需要告诉大家gzip
我的身体已经被压缩了。
我已经进行了一些搜索,寻找一种使用gzip
包或任何其他方式的自动化方式,这可以防止我干预某些库、HTTP 堆栈中的执行路径,或者最糟糕的是,为自己编写其他库(例如gzip
.
有人知道gzip
包如何解决这个问题吗?
跃然一笑
相关分类