Nginx auto minimizza l'output html


12

qualcuno conosce un modo per ottenere nginx (o qualsiasi altro metodo) per minimizzare l'output html al volo? Mi sembra semplice e può radere qualche kb e aiutare ad accelerare il sito.


3
Non sono sicuro di un'estensione che abbia questa capacità, ma ne vale la pena? Ci sarà un impatto sulla CPU su ogni richiesta, ciò significa che il tuo sito Web avrà bisogno di più CPU man mano che il carico aumenta. Suppongo che tu stia già utilizzando l'estensione gzip per comprimere il testo prima di inviarlo, quindi tutto lo spazio bianco verrà rimosso come parte di quel processo. Puoi anche pre-gz i tuoi file, il che farà risparmiare tempo alla CPU su ogni richiesta.
Andrew Taylor,

@AndrewTaylor, quindi è per questo che è meglio memorizzarlo nella cache in seguito.
poige

Risposte:


2

Google Pagespeed per Nginx esegue la minificazione e molte altre cose. Tuttavia, quando ho fatto il benchmarking non ha fatto abbastanza differenza per preoccuparmi, dato che il mio sito era già ben ottimizzato. Per i siti che non sono già ottimizzati, probabilmente farebbe una differenza significativa.

C'è un tutorial su come far funzionare Nginx / Pagespeed qui . Devi costruirlo dalla fonte. Tendo a mantenere aggiornato il sito Web collegato, se mi capita di toccare quell'area, quindi potrebbe essere più aggiornato di questa risposta di seguito.

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

Il mio consiglio: dimentica minimizza e usa il modulo gzip . Funzionerà meglio e raggiungerà lo stesso obiettivo. Ma, ovviamente, puoi farlo. C'è un modulo di terze parti chiamato strip , specialmente per questo argomento.


Esempio di configurazione di 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;

2
Buona scoperta. Tuttavia, non sembra pronto per la produzione, quindi sostengo la tua raccomandazione di utilizzare gzip - risparmia molto di più che minimizzare l'HTML.
pjmorse,

1
Non dimenticare di aggiungerne altri gzip_typescome text/html.
Gerald

Si noti che la compressione gzip delle pagine HTML in TLS / SSL potrebbe essere vulnerabile a BREACH .
Naglis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.