Saya akan sangat menghargai bantuan memahami perilaku Apache ini.
Saya berkomunikasi dengan PHP dari aplikasi iPhone Objective-C di application / json. Kompresi Gzip diaktifkan di server, dan diminta oleh klien.
Dari .htaccess saya:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Untuk permintaan kecil, Apache sedang mengatur header 'Content-Length'. Misalnya (nilai-nilai ini adalah output dalam Objective-C dari header):
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 adalah header yang saya tambahkan set ke ukuran string JSON yang tidak terkompresi.
Seperti yang Anda lihat, permintaan ini sangat kecil (217 byte).
Inilah tajuk dari permintaan yang lebih besar (282.888 bytes):
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;
Perhatikan bahwa Panjang Konten tidak diberikan.
Pertanyaan saya:
- Mengapa Apache tidak mengirim Panjang Konten untuk permintaan yang lebih besar?
- Apakah fakta bahwa 'Contend-Encoding = gzip' diatur berarti kompresi gzip masih bekerja pada permintaan yang lebih besar, walaupun saya tidak dapat memverifikasi perbedaan ukuran?
- Apakah ada cara saya bisa membuat Apache menyertakan Panjang Konten aktual untuk permintaan yang lebih besar ini agar lebih akurat melaporkan penggunaan data kepada pengguna?
Aplikasi ini dapat digunakan pada paket data yang mahal, karenanya keinginan saya untuk melaporkan penggunaan aktual kepada pengguna, bukan 30-70% penggunaan yang meningkat (beberapa ratus KB tambahan mungkin kedengarannya tidak banyak - tetapi paket ini dapat menelan biaya antara $ 1 dan $ 10 per MB!).
Terima kasih sebelumnya.