У меня есть VPS под управлением nginx 1.1.19, php-fpm 5.3.10 и APC 3.1.9. На сервере в основном запущены сценарии PHP (vB, SMF, IPB). Я также использую Cloudflare в качестве CDN, если это важно.
Насколько я могу судить, есть 3 варианта сжатия, и я не уверен, какие из них дублируют друг друга или все ли они есть, и какая служба должна их обрабатывать.
nginix имеет gzip, php-fpm имеет zlib, а сами скрипты PHP имеют gzip. Мне кажется, я видел во многих документах, что если веб-сервер (nginx) обрабатывает gzip, скрипты PHP этого не должны. Следует ли включать zlib в php-fpm вместе с gzip или технически это одно и то же? Я видел один источник, который сказал, что gzip / mod_deflate с zlib_compression является избыточным и без необходимости использует циклы ЦП, но моя установка vB, похоже, работает более плавно, когда включены zlib и gzip.
Кто-нибудь знает наиболее эффективную комбинацию / расположение сжатия для этой настройки?
Вы захотите использовать gzip в nginx и отключить gzip в веб-приложении, которое вы используете. Включение обоих приведет к поломке gzip.
Cloudflare, по моему опыту, только замедлял работу веб-сайта (статический контент обслуживался медленно в часы пик), но, если я правильно помню, Cloudflare также имеет параметр сжатия (gzip).
Оба формата zlib и gzip используют один и тот же формат сжатых данных внутри, но имеют разные заголовки и концы вокруг сжатых данных.
С другой стороны, формат zlib был разработан для приложений в памяти и каналах связи, имеет гораздо более компактный заголовок и трейлер, а также использует более быструю проверку целостности, чем gzip.
Вместо APC вы можете попробовать eAccelerator. Многие пользователи сообщили, что он работает лучше, чем APC.
Если вы хотите продолжить оптимизацию, взгляните на Google PageSpeed и YSlow. Они, безусловно, очень помогли мне в оптимизации моих сайтов!
Я не уверен, что произойдет, если вы включите сжатие на нескольких уровнях, но я бы включил его на самом верхнем уровне, то есть в Nginx. Это улавливает динамически создаваемый контент PHP, а также статический контент, который обслуживается непосредственно Nginx. Я рассматриваю сжатие как один из финальных фильтров вывода перед отправкой содержимого клиенту.