Nginx auto minify sortie html

12

Quelqu'un connaît-il un moyen d'obtenir nginx (ou toute autre méthode) pour minimiser la sortie html à la volée? Cela me semble simple et peut réduire de quelques ko et accélérer le site.

Trazx
la source
3
Je ne suis pas sûr d'une extension qui a cette capacité, mais est-ce que ça vaut le coup? Il y aura un impact CPU sur chaque demande, cela signifie que votre site web aura besoin de plus de CPU à mesure que votre charge augmente. Je suppose que vous utilisez déjà l'extension gzip pour compresser le texte avant de l'envoyer, donc tous les espaces seront supprimés dans le cadre de ce processus. Vous pouvez également pré-gz vos fichiers, ce qui économisera du temps CPU à chaque demande.
Andrew Taylor
@AndrewTaylor, c'est pourquoi vous feriez mieux de le mettre en cache par la suite.
poige

Réponses:

2

Google Pagespeed pour Nginx fait de la minification et beaucoup d'autres choses. Cependant, lorsque j'ai effectué un benchmark, cela n'a pas fait suffisamment de différence pour s'embêter, étant donné que mon site était déjà bien optimisé. Pour les sites qui ne sont pas déjà optimisés, cela ferait probablement une différence significative.

Il y a un tutoriel sur la façon de faire fonctionner Nginx / Pagespeed ici . Vous devez le construire à partir de la source. J'ai tendance à garder le site Web lié à jour, s'il m'arrive de toucher cette zone, il peut donc être plus à jour que cette réponse ci-dessous.

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
la source
12

Ma recommandation: oubliez minify et utilisez le module gzip . Cela fonctionnera mieux et atteindra le même objectif. Mais, bien sûr, vous pouvez le faire. Il existe un module tiers nommé strip , spécialement pour ce sujet.


Exemple de configuration 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
la source
2
Bonne trouvaille. Cela ne semble pas prêt pour la production, donc j'appuie votre recommandation d'utiliser gzip à la place - économise beaucoup plus que la réduction du format HTML.
pjmorse
1
N'oubliez pas d'en ajouter d'autres gzip_typescomme text/html.
Gerald
Notez que la compression gzip des pages HTML sous TLS / SSL peut être vulnérable à BREACH .
Naglis