Tôi thực sự sẽ đánh giá cao một số trợ giúp để hiểu hành vi Apache này.
Tôi đang liên lạc với PHP từ ứng dụng iPhone Objective-C trong ứng dụng / json. Nén Gzip được kích hoạt trên máy chủ và được khách hàng yêu cầu.
Từ .htaccess của tôi:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Đối với các yêu cầu nhỏ, Apache đang đặt tiêu đề 'Độ dài nội dung'. Ví dụ: (các giá trị này là đầu ra trong Objective-C từ tiêu đề):
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-Uncompced-Content-Length là một tiêu đề tôi đang thêm được đặt thành kích thước của chuỗi JSON không nén.
Như bạn có thể thấy, yêu cầu này rất nhỏ (217 byte).
Đây là các tiêu đề từ một yêu cầu lớn hơn (282888 byte):
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;
Lưu ý rằng Độ dài nội dung không được đưa ra.
Những câu hỏi của tôi:
- Tại sao Apache không gửi Độ dài nội dung cho yêu cầu lớn hơn?
- Có phải thực tế là 'Contend-Encoding = gzip' có nghĩa là nén gzip vẫn hoạt động theo yêu cầu lớn hơn, mặc dù tôi không thể xác minh sự khác biệt kích thước?
- Có cách nào để tôi có thể khiến Apache đưa vào Độ dài nội dung thực tế cho các yêu cầu lớn hơn này để báo cáo chính xác hơn việc sử dụng dữ liệu cho người dùng không?
Ứng dụng này có thể được sử dụng cho các gói dữ liệu đắt tiền, do đó tôi muốn báo cáo mức sử dụng thực tế cho người dùng, chứ không phải mức sử dụng tăng 30-70% (vài trăm KB có thể không có vẻ nhiều - nhưng các gói này có thể có giá từ 1 đô la và $ 10 mỗi MB!).
Cảm ơn trước.