在go Web应用程序的上下文中,我使用了响应缓存并对其进行压缩,因此节省了带宽(响应较大)。我正在使用gin-gonic
框架和软件包gzip
进行压缩。这个软件包工作得很好,使我能够接收和回复gzip压缩的主体。这几行就足够了:
router := gin.Default()
router.Use(gzip.Gzip(gzip.DefaultCompression))
一切都是魔术。现在,我还使用了一个缓存来存储响应。为了节省空间和CPU,我想将已经压缩的响应存储在缓存中,因此也不再重复压缩。作为包装HTTP正文处理的中间件,gzip
透明地解压缩请求并压缩响应。但是,在我的处理程序级别,我想获得响应的压缩表示形式,以便将其存储到缓存中。另外,我需要告诉gzip
我的身体已经被压缩。
我已经进行了一些搜索,寻找一种使用gzip
软件包或其他任何软件包的自动方式,该方式使我无法干预某些库,HTTP堆栈中的执行路径,甚至更糟的是,无法自行编程由其他gzip
库制作。
有人知道gzip
软件包如何解决此问题吗?