On Mon, Mar 26, 2012 at 5:07 PM, 生活在别处
<lys...@qq.com> wrote:
您好!之前我一直在使用httpredis这个插件来通过nginx操作redis的数据,但是httpredis不支持解压缩,只能以无压缩方式把数据存入redis,然后通过nginx+redis插件读取内容。这样带来的一个问题就是需要非常大的内容来支持redis的存储。后来我想了个办法,抛弃httpredis,通过nginx+fcgi操作redis数据,fcgi脚本将redis的内容解压缩,这样就可以压缩数据存进redis了。同样的内容,占用内存空间,压缩是不压缩1/5。但这样有个致命的缺点,就是nginx+fcgi并发数很低。
无意中,拜读了您的HttpSRCacheModule,发现redis通过它可以操作redis。眼前亮光光:可否修改HttpSRCacheModule源码添加解压缩命令,将从redis获取的数据解压缩后返回给nginx(用户)?但我找了好久都没找到在代码哪里添加解压缩代码?在此盼望您指点迷津。小弟非常感谢章老师的指导和作品。
gzip 压缩和解压缩支持一直是 ngx_srcache 模块的一项 TODO :)
srcache_fetch 的 gzip 解压功能可以添加在 src/ngx_http_srcache_store.c 文件中的 ngx_http_srcache_body_filter 函数中,即将数据放入 ctx->body_from_cache 链表之前进行解压。
同时 srcache_store 的 gzip 压缩功能也是在同样的 C 函数中添加,即在它把数据放入 ctx->body_to_cache 链表之前进行压缩操作。
欢迎为 ngx_srcache 模块贡献解压缩以及压缩的功能支持 :)
Thanks!
-agentzh
P.S. 因为不涉及敏感信息,所以我将此邮件同时抄送给了 openresty 邮件组,这样整个团队以及其他用户都可以看到这里的讨论 :)