ฉันขอขอบคุณที่ช่วยให้เข้าใจพฤติกรรมของ Apache นี้
ฉันกำลังสื่อสารกับ PHP จากแอป iPhone Objective-C ใน application / json การบีบอัด Gzip เปิดใช้งานบนเซิร์ฟเวอร์และลูกค้าร้องขอ
จาก. htaccess ของฉัน:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
สำหรับคำขอขนาดเล็ก Apache กำลังตั้งค่าส่วนหัว 'ความยาวเนื้อหา' ตัวอย่างเช่น (ค่าเหล่านี้เป็นเอาต์พุตใน 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;
โปรดสังเกตว่าไม่ได้รับความยาวเนื้อหา
คำถามของฉัน:
- ทำไม Apache ไม่ส่งความยาวเนื้อหาสำหรับคำขอที่ใหญ่กว่า
- ความจริงที่ว่า 'Contend-Encoding = gzip' ถูกตั้งค่าหมายความว่าการบีบอัด gzip ยังคงทำงานตามคำขอที่ใหญ่ขึ้นแม้ว่าฉันจะไม่สามารถตรวจสอบความแตกต่างของขนาดได้หรือไม่
- มีวิธีที่ฉันสามารถให้ Apache รวมความยาวเนื้อหาจริงสำหรับคำขอที่มีขนาดใหญ่ขึ้นเหล่านี้เพื่อรายงานการใช้ข้อมูลให้กับผู้ใช้อย่างแม่นยำมากขึ้นหรือไม่?
แอพนี้สามารถใช้กับแผนข้อมูลที่มีราคาแพงดังนั้นความปรารถนาของฉันในการรายงานการใช้งานจริงให้กับผู้ใช้ไม่ใช่การใช้งานที่สูงเกินจริง 30-70% (ไม่กี่ร้อย KB พิเศษอาจไม่เหมือนมาก - แต่แผนเหล่านี้อาจมีราคาระหว่าง $ 1 และ $ 10 ต่อ MB!)
ขอบคุณล่วงหน้า.