Nginx автоматически минимизирует вывод html

12

Кто-нибудь знает способ получить nginx (или любой другой метод), чтобы минимизировать вывод html на лету? Это кажется простым для меня и может побрить несколько килобайт и помочь ускорить сайт.

Trazx
источник
3
Я не уверен в расширении, которое имеет такую ​​возможность, но стоит ли оно того? На каждый запрос будет влиять процессор, это означает, что вашему веб-сайту потребуется больше ресурсов процессора при увеличении нагрузки. Я предполагаю, что вы уже используете расширение gzip для сжатия текста перед его отправкой, поэтому все пробелы будут удалены как часть этого процесса. Вы также можете предварительно подготовить файлы, что сэкономит время процессора при каждом запросе.
Эндрю Тейлор
@AndrewTaylor, поэтому лучше потом кешировать.
Пой

Ответы:

2

Google Pagespeed для Nginx занимается минификацией и кучей других вещей. Однако, когда я провел сравнительный анализ, это не помогло, так как мой сайт уже был хорошо оптимизирован. Для сайтов, которые еще не оптимизированы, это, вероятно, будет иметь существенное значение.

Там в учебник о том, как получить Nginx / PageSpeed работать здесь . Вы должны построить его из источника. Я стараюсь обновлять связанный веб-сайт, если я случайно коснусь этой области, поэтому он может быть более актуальным, чем приведенный ниже ответ.

cd /home/ec2-user
mkdir nginx-build
cd nginx-build
service nginx stop
yum groupinstall "Development Tools"
yum install pcre-devel zlib-devel openssl-devel
wget http://nginx.org/download/nginx-1.9.11.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.29.tar.gz
tar -xzf nginx-1.9.11.tar.gz
tar -xzf ngx_cache_purge-2.3.tar.gz
tar -xzf v0.29.tar.gz
tar -xzf 1.9.32.10.tar.gz    # Google Pagespeed, optional
ngx_version=1.9.32.10
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip   # Google Pagespeed, optional
cd ngx_pagespeed-release-1.9.32.10-beta   # Google Pagespeed, optional
wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz   # Google Pagespeed, optional
cd ../nginx-1.9.9
# Note that I have no idea what the next line does but it was in the official guide
PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc"
# Safe option, slower, lots of modules included
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --add-module=/tmp/ngx_cache_purge-2.3 --add-module=/tmp/headers-more-nginx-module-0.29 --with-http_realip_module --add-modeule=../ngx_pagespeed-release-1.9.32.10-beta
make && make install
make clean  (NB: optional)
service nginx start
Тим
источник
12

Моя рекомендация: забудьте minify и используйте модуль gzip . Это будет работать лучше и достигать той же цели. Но, конечно же, вы можете сделать это. Есть сторонний модуль с названием strip , специально для этой темы.


Пример конфигурации gzip:

# Context:  http, server, location

    gzip            on;
    gzip_min_length 1000;
    gzip_proxied    expired no-cache no-store private auth;
    gzip_types      text/plain application/xml;
petermolnar
источник
2
Хорошая находка. Тем не менее, он не выглядит готовым к работе, поэтому я рекомендую использовать вместо него gzip - экономит гораздо больше, чем минимизирует HTML.
pjmorse
1
Не забудьте добавить еще несколько gzip_typesтаких как text/html.
Джеральд
Обратите внимание, что сжатие gzip HTML-страниц в TLS / SSL может быть уязвимо для BREACH .
Наглис