이 아파치 동작을 이해하는 데 도움을 주시면 감사하겠습니다.
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가 거의 들리지 않을 수 있음) MB 당 10 달러!).
미리 감사드립니다.