我非常感谢您对理解Apache行为的一些帮助。
我正在从application / json中的iPhone Objective-C应用程序与PHP通信。Gzip压缩在服务器上启用,并由客户端请求。
从我的.htaccess:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
对于较小的请求,Apache会设置“ Content-Length”标头。例如(这些值从标头在Objective-C中输出):
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 185; <-------------
"Content-Type" = "application/json";
Date = "Wed, 22 Sep 2010 12:20:27 GMT";
"Keep-Alive" = "timeout=3, max=149";
Server = Apache;
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.2.13";
"X-Uncompressed-Content-Length" = 217;
X-Uncompressed-Content-Length是一个标头,我将其设置为未压缩的JSON字符串的大小。
如您所见,此请求非常小(217字节)。
这是来自较大请求(282888字节)的标头:
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Type" = "application/json";
Date = "Wed, 22 Sep 2010 12:20:29 GMT";
"Keep-Alive" = "timeout=3, max=148";
Server = Apache;
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.2.13";
"X-Uncompressed-Content-Length" = 282888;
注意,没有给出Content-Length。
我的问题:
- Apache为什么不为较大的请求发送Content-Length?
- 设置'Contend-Encoding = gzip'的事实是否意味着即使我无法验证大小差异,gzip压缩仍可处理较大的请求?
- 有没有办法让Apache为这些较大的请求包括实际的Content-Length,以更准确地向用户报告数据使用情况?
该应用程序可以用于昂贵的数据计划,因此我希望向用户报告实际使用情况,而不是夸大使用率的30-70%(几百个额外的KB听起来可能并不多-但这些计划的成本在1美元之间以及每MB 10美元!)。
提前致谢。