Yığın halinde transfer kodlama ve gzip ikisini de kullanarak

2 Cevap php

Geçenlerde benim sitede gzip kullanarak başladı ve o hasarlı veri içeriği genişletmek değil söyleyerek bir hata verir Opera hariç tüm tarayıcılarda bir cazibe gibi çalıştı. Ben test ve gzip ikisini de kullanarak bir sorun olabilir Googling ve transfer yığın halinde kodlama toplayabilir ne. Css dosyaları gibi küçük dosya talep olduğunda hiçbir hata olduğunu gerçeği de bu yönde işaret.

Bu bilinen bir sorun var mı ya da ben hakkında düşünce sığınak başka bir şey var mı?

Birisi aynı zamanda bir içerik-uzunluk başlığı gönderme ile ilgili bir şey olabileceğini belirtti.

İşte benim kod en alakalı kısmının basitleştirilmiş bir versiyonu:

$contents = ob_get_contents();
ob_end_clean();
header('Content-Encoding: '.$encoding);
print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
$size = strlen($contents);
$contents = gzcompress($contents, 9);
$contents = substr($contents, 0, $size);
print($contents);
exit();

2 Cevap

GZip ve yığın halinde kodlama Web'de birlikte tüm zaman kullanılır, bu yüzden sorun, tek başına neden olduğu şüphe edilir.

Yığın halinde kodlama kullanımda ise bir Content-Length üstbilgisi göndermek gerekir.

Eğer gzip için pazarlık yaparken, aynı zamanda, size göndermek gerekir Vary: (sıkıştırılmış ve sıkıştırılmamış yanıtları) Accept-Encoding ve ETAG'ları göndermek, onlar sıkıştırılmış ve sıkıştırılmamış yanıtları için farklı olması gerekir.

http://redbot.org/ ile URL çalıştırmayı deneyin - bu gzip kodlama ile birkaç ortak sorunlar için denetler.

İdeal olarak, emin bir kodlanmış yanıt destekler yapmak için istemciden istek başlığı kontrol etmelisiniz. Aramak için başlık şudur: "Accept-Encoding: gzip, Söndür". Ayrıca muhtemelen istemci HTTP 1.1 kullanan olup olmadığını kontrol etmelisiniz.