In the hopes this will help others - a hard to spot gotcha when implementing zlib.output_compression. if you use flush() anywhere in your script (even right at the end) the compression won't work - you need to let that happen automatically or it ends up being sent uncompressed.
Çalışma Anı Yapılandırması
Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.
Zlib eklentisi, istek yapan tarayıcı desteklediği takdirde, sayfaların şeffaf olarak sıkıştırılmasını sağlar. Eklentinin php.ini yapılandırma dosyasında üç yönergesi vardır.
| İsim | Öntanımlı | Tanım Yeri | Sürüm Bilgisi |
|---|---|---|---|
| zlib.output_compression | "0" | PHP_INI_ALL | PHP 4.0.5'dan beri kullanılabilmektedir. |
| zlib.output_compression_level | "-1" | PHP_INI_ALL | PHP 4.3.0'dan beri kullanılabilmektedir. |
| zlib.output_handler | "" | PHP_INI_ALL | PHP 4.3.0'dan beri kullanılabilmektedir. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
zlib.output_compressionboolean/integer -
Sayfanın şeffaf olarak sıkıştırılıp sıkıştırılmayacağı. Bu yönergeye php.ini içinde veya Apache yapılandırmasında "On" değerini belirtirseniz ve tarayıcı istek yaparken bir "Accept-Encoding: gzip" veya "deflate" başlığı gönderirse sayfalar sıkıştırılır ve çıktıya istek yapılan başlığa göre (sırasıyla) "Content-Encoding: gzip" veya "Vary: Accept-Encoding" başlığı eklenir. Çalışma anında herhangi bir çıktı göndermeden önce de bu yönergeye "On" atanabilir.
Bu seçenek "On"/"Off" değerlerinden başka tamsayı değerler de kabul eder. Tamsayı değerle çıktı tamponunun boyutunu belirleyebilirsiniz (öntanımlı olarak 4 kB'tır).
Bilginize:
Bu yönergeye "On" atandığı takdirde output_handler boş olmalıdır! Yerine zlib.output_handler kullanılmalıdır.
-
zlib.output_compression_levelinteger -
Çıktının şeffaf olarak sıkıştırılması için kullanılacak sıkıştırma seviyesi. 0 (sıkıştırma yok) ile 9 (en fazla sıkıştırma) arasında bir değer olarak belirtilir. Öntanımlı değer -1 olup, kullanılacak sıkıştırma seviyesine sunucu karar verir.
-
zlib.output_handlerstring -
php.ini dosyanızda zlib.output_compression yönergesini etkin kılmışsanız ek çıktı eylemcileri belirtemezsiniz. Bu ayar output_handler gibi yapılır fakat birlikle kullanılamazlar.
Apparently, there is a bug in certain versions of PHP with setting zlib.output_compression to "On" via ini_set:
<?php
ini_set("zlib.output_compression", "On");
?>
In some cases, it does not send the Content-type header and browsers won't know to decompress the contents before displaying. Instead, you can set it to the buffer size, which sends the correct header:
<?php
ini_set("zlib.output_compression", 4096);
?>
