Nginx auto minify salida html

12

¿Alguien sabe de una manera de obtener nginx (o cualquier otro método) para minimizar la salida html sobre la marcha? Me parece sencillo y puede reducir algunos kb y ayudar a acelerar el sitio.

Trazx
fuente
3
No estoy seguro de una extensión que tenga esta capacidad, pero ¿vale la pena? Habrá un impacto de CPU en cada solicitud, lo que significa que su sitio web necesitará más CPU a medida que aumente su carga. Supongo que ya está utilizando la extensión gzip para comprimir el texto antes de enviarlo, por lo que se eliminarán todos los espacios en blanco como parte de ese proceso. También puede pre-gz sus archivos, que ahorrará tiempo de CPU en cada solicitud.
Andrew Taylor
@AndrewTaylor, por eso es mejor que lo guardes en caché después.
poige

Respuestas:

2

Google Pagespeed para Nginx hace minificación y muchas otras cosas. Sin embargo, cuando hice una evaluación comparativa no importó lo suficiente como para molestarme, dado que mi sitio ya estaba bien optimizado. Para los sitios que ya no están optimizados, probablemente marcaría una diferencia significativa.

Hay un tutorial sobre cómo hacer que Nginx / Pagespeed funcione aquí . Tienes que construirlo desde la fuente. Tiendo a mantener actualizado el sitio web vinculado, si toco esa área, por lo que puede estar más actualizado que esta respuesta a continuación.

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
Tim
fuente
12

Mi recomendación: olvide minify y use el módulo gzip . Funcionará mejor y logrará el mismo objetivo. Pero, como por supuesto, puedes hacerlo. Hay un módulo de terceros llamado strip , especialmente para este tema.


Ejemplo de configuración de 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
fuente
2
Buen descubrimiento. Sin embargo, no parece listo para la producción, por lo que secundo su recomendación de usar gzip en su lugar: ahorra mucho más que minimizar el HTML.
pjmorse
1
No olvides agregar algunos más gzip_typescomo text/html.
Gerald
Tenga en cuenta que la compresión gzip de páginas HTML bajo TLS / SSL puede ser vulnerable a BREACH .
Naglis