Компресиране
В apache с PHP има 2 начина за компресиране на съдържанието: със Zlib чрез PHP или с mod_deflate чрез apache. Разликата между тези две е, че PHP’s Zlib output_compression ще работи само с файлове, преминали през PHP манипулатора (т.е. .php файлове), докато mod_deflate на Apache може да работи с всякакви файлове (например статичен CSS или JS). Така че, apache mod-deflate е по-добрият вариант.
По-задълбочено, mod_deflate предоставя изходния филтър DEFLATE, който позволява данните излизащи от вашия сървър да са компресиран чрез gzip, преди да бъдат изпратени на потребителя по мрежата. Компресирането с gzip е поддържано единственото за да се осигури пълна съвместимост със старите реализации на браузърите.
Apache mod_expires също е необходимо да е активен на сървъра. Този модул контролира настройката на HTTP заглавката Expires и директивата max-age на HTTP заглавката Cache-Control в отговорите на сървъра. Тези HTTP заглавки са инструкция за клиента относно валидността и постоянството на документа. Ако е кеширан, документът може да бъде извлечен от кеша, а не от източника, докато изтече зададеното време. След като указаното време изтече, копието на кеша се счита за невалидно и трябва да се получи ново копие от източника. Въпреки това, за да контролирате и модифицирате HTTP заглавките, трябва да се активира и mod_headers.
Apache mod_mime е друг задължителен модул. Този модул се използва за присвояване на метаданни към избраното за HTTP отговор съдържание, чрез съпоставяне на шаблони в URI или имената на файлове със стойностите на метаданните. Например, разширенията на файловите имена често определят типа мултимедиен носител на съдържанието, език, набор от символи или кодиране на съдържанието. Всички директиви се използват за картографиране на разширението на файла върху метаданните за този файл. Съответно те задават набор от символи, кодиране на съдържание, език на съдържание и тип носител (тип съдържание) на документи.
Типът MIME се използва за идентифициране на тип данни или файл. По този начин софтуерът знае как да борави с данните. В интернет, той служи на същата цел, както разширенията на файловете в Microsoft Windows. Нещо повече, с директивите на mime можете да посочите как ще се обработва файлът (т.е. доставя се на потребителя) или да дефинирате компресирането на файла (напр. можете да зададете gzip да обслужва .gz файлове). Типът MIME също е полезен за кеширане на вашето съдържание в браузъра на клиента.
Пълен списък на MIME типовете можете да намерите тук: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
Недостатъкът на всичко описано по-горе е, че тези модули на apache трябва да бъдат активирани от администратора на сървъра или вашата хостинг компания.
Кеширане
Когато потребител отвори вашия уебсайт, браузърът трябва да изтегли всички файлове на уеб страниците, за да се покаже тя правилно. Това включва всички HTML, CSS, JavaScript, изображения и др. Една проста страница може да се състои от няколко файла и да е с малък размер. Но други може да имат много файлове и да бъдат големи до няколко мегабайта. Например, главната страница на този сайт е с размер около 3 MB. Тези големи файлове отнемат повече време за зареждане и ако потребителят има бавна интернет връзка, той може да реши да се откаже и да напусне вашия сайт, като по този начин губите потенциален доход за вас. Освен това всеки файл, който трябва да бъде изтеглен, е отделна заявка към сървъра.
Използвайки гореспоменатите модули, можете да компресирате съдържанието си и да принудите посетителите на уебсайта да го кешират в браузъра си, като по този начин ще зареждат сайта ви по-бързо, когато се върнат отново или взаимодействат с функциите в него. Времето за зареждане на страниците може значително да се подобри, като помолите посетителите да запазят и използват повторно файловете, включени във вашия уебсайт.
Така че, за да обобщим горното, използвайте mod_mime, за да дефинирате типовете файлове, които използвате, след това с mod_deflate компресирайте файловете и след това с mod_expires и mod_headers кажете на браузъра на посетителя да кешира съдържанието и за колко време да го кешира, преди да поиска файловете да бъдат актуализирани.