Hello!
2013/3/5 zzldccpro:
> 我想对post类型的请求进行缓存处理,使用 uri 和 $request_body 作为key
> 。问题是如果这个请求没有参数,也就是没有$request_body 可以正常通过,但是如果请求有参数的话,这个请求就不能通过。
1. memcached 对 key 的长度是有限制的(255 字节),而你的 $request_body 的值可能会很大(上 KB 甚至上
MB)。你需要使用 set_md5 这样的配置指令对你的 key 事先进行哈希:
http://wiki.nginx.org/HttpSetMiscModule#set_md5
2. 当你的请求体超过 client_body_buffer_size 但小于 client_max_body_size
配置时,会缓冲到临时文件,此时 $request_body 变量的值总是为空。你可以把 client_body_buffer_size
配置成和 client_max_body_size 一般大,以杜绝缓冲到临时文件的可能性。
3. “这个请求就不能通过”这样的说法对于解决问题并没有什么帮助。你应当在向他人求助时提供更多的细节,比如你期望的是什么现象,而你又看到了什么现象。毕竟我们并没有一直坐在你的身边
;)
4. 在遇到问题时,建议总是先尝试最新版本的相关软件。在这里便是 nginx 核心和 ngx_srcache 模块。
Best regards,
-agentzh