Bu Apache davranışını anlamaya yardımcı olduğum için gerçekten minnettar olurum.
Ben uygulama / json bir iPhone Objective-C app PHP ile iletişim kuruyorum. Gzip sıkıştırması sunucuda etkinleştirilir ve istemci tarafından istenir.
.Htaccess'imden:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Küçük istekler için Apache 'İçerik Uzunluğu' başlığını ayarlıyor. Örneğin (bu değerler başlıktan Objective-C biçiminde çıkarılır):
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 , sıkıştırılmamış JSON dizesinin boyutuna ayarladığım bir başlık.
Gördüğünüz gibi, bu istek çok küçük (217 bayt).
Daha büyük bir isteğin başlıkları (282888 bayt):
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;
İçerik Uzunluğunun verilmediğine dikkat edin.
Sorularım:
- Apache neden daha büyük istek için İçerik Uzunluğunu göndermiyor?
- 'Contend-Encoding = gzip' ayarlanmış olması, boyut farkını doğrulayamama rağmen gzip sıkıştırmasının daha büyük istek üzerinde çalıştığı anlamına mı geliyor?
- Apache'nin veri kullanımını kullanıcılara daha doğru bir şekilde bildirmek için bu daha büyük istekler için gerçek İçerik Uzunluğunu dahil etmesinin bir yolu var mı?
Bu uygulama pahalı veri planlarında kullanılabilir, bu yüzden gerçek kullanımı kullanıcıya bildirmek arzum,% 30-70 şişirilmiş kullanım değil (birkaç yüz ekstra KB çok fazla gelmeyebilir - ancak bu planlar 1 $ arasında olabilir ve MB başına 10 $!).
Şimdiden teşekkürler.