Знаете ли, че може да архивирате страницата преди да я изпратите към браузера, а той да я разархивира и изведе точно така, както сте му е подали? По този начин ще намалите обема на данните, които изпращате, времето за зареждане на сайта и трафика си. Единствено трябва да се притеснявате, дали даден браузер поддържа „deflate” или „gzip”, но в днешно време почти всеки има тази поддръжка. Също така php трябва да е с включено zlib разширение.
По подробно, какво ни е нужно?
Gzip - Алгоритъм за намаляване на размера, откривайки дублиращи се данни, използуван от GZIP, Zip, Zlib. С отворен код е. Има поддръжка в почти всички браузери.
Deflate – Алгоритъм за компресия подобен на Gzip, комбинация между алгоритъма LZ77 и кодиране на Huffman. Поддържа се от повечето браузери.
Zlib – Това е библиотека за компресиране на данни с отворен код, не обременена с лицензи. Писана е така, че е да може да се използва на всеки вид хардуер и операционна система. Поддръжката на zlib в php не е по подразбиране и ако искаме да включим тази библиотека, ще трябва да компилираме php със клаузата „-with-zlib[=DIR]”. Във уиндоус версията на php е включена.
Mod_deflite също върши работа, но за него няма да говорим в тази статия. Повече информация за него ще откриете на този адрес - http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
Как става това?
Когато скрипта се изпълнява, може да отделим заглавната част от тази на тялото. Заглавната част не е изпратена веднага, но чака своя ред и затова може лесно да я модифицираме. Веднъж изпратена, повече не може да се модифицира и при опит ще изведе съобщение за грешка. След нея трябва да изпратим тялото на документа.
Ключа е във функциите на PHP за контрол на изхода. Когато задействаме буферирането на изхода, не се изпраща HTTP заглавната част веднага. Така ние имаме възможност да е променим или добавим нови клаузи към нея. Най-хубавото е, че когато скрипта приключи работата си, автоматично изпраща заглавната част и тялото на документа.
Основните функции, които ни трябват са: