Nginx minimiert automatisch die HTML-Ausgabe

12

Kennt jemand einen Weg, um Nginx (oder eine andere Methode) zu bekommen, um die HTML-Ausgabe im laufenden Betrieb zu minimieren? Es scheint mir unkompliziert zu sein und kann ein paar Kilobyte abschneiden und dabei helfen, die Site zu beschleunigen.

Trazx
quelle
3
Ich bin mir nicht sicher, ob eine Erweiterung über diese Funktion verfügt, aber lohnt es sich? Jede Anfrage hat einen CPU-Effekt. Dies bedeutet, dass Ihre Website mit zunehmender Auslastung mehr CPU benötigt. Ich gehe davon aus, dass Sie die gzip-Erweiterung bereits verwenden, um den Text zu komprimieren, bevor Sie ihn senden. Daher werden alle Leerzeichen im Rahmen dieses Vorgangs entfernt. Sie können Ihre Dateien auch vorab speichern, wodurch bei jeder Anforderung CPU-Zeit gespart wird.
Andrew Taylor
@AndrewTaylor, deshalb sollten Sie es später zwischenspeichern.
Poige

Antworten:

2

Google Pagespeed für Nginx ist für die Minimierung und eine Reihe anderer Aufgaben zuständig . Als ich das Benchmarking durchführte, machte es jedoch nicht genug aus, um mich damit zu beschäftigen, da meine Website bereits gut optimiert war. Für Websites, die noch nicht optimiert wurden, würde dies wahrscheinlich einen signifikanten Unterschied bedeuten.

Es gibt eine Anleitung, wie man Nginx / Pagespeed Arbeit bekommen hier . Sie müssen es aus dem Quellcode erstellen. Ich neige dazu, die verlinkte Website auf dem neuesten Stand zu halten, wenn ich diesen Bereich berühre, sodass er möglicherweise aktueller ist als diese Antwort unten.

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
quelle
12

Meine Empfehlung: Minify vergessen und das gzip Modul benutzen . Es wird besser funktionieren und das gleiche Ziel erreichen. Aber natürlich können Sie es tun. Speziell für dieses Thema gibt es ein Drittanbieter-Modul namens strip .


Beispiel für eine gzip-Konfiguration:

# 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
quelle
2
Guter Fund. Sieht jedoch nicht produktionsreif aus, und ich bin Ihrer Empfehlung gefolgt, stattdessen gzip zu verwenden - das spart viel mehr als das Minimieren des HTML-Codes.
pjmorse
1
Vergessen Sie nicht, weitere gzip_typeswie text/html.
Gerald
Beachten Sie, dass die gzip-Komprimierung von HTML-Seiten unter TLS / SSL möglicherweise für BREACH anfällig ist .
Naglis