Nginx auto minify output html

12

apakah ada yang tahu cara untuk mendapatkan nginx (atau metode lain) untuk meminimalkan output html dengan cepat? Tampaknya mudah bagi saya dan dapat mencukur beberapa kb dan membantu mempercepat situs.

Trazx
sumber
3
Saya tidak yakin dengan ekstensi yang memiliki kemampuan ini, tetapi, apakah itu layak? Akan ada dampak CPU pada setiap permintaan, itu berarti situs web Anda akan membutuhkan lebih banyak CPU saat beban Anda meningkat. Saya berasumsi Anda sudah menggunakan ekstensi gzip untuk mengompresi teks sebelum Anda mengirimnya, jadi, semua spasi putih akan dihapus sebagai bagian dari proses itu. Anda juga dapat melakukan pre-gz file Anda, yang akan menghemat waktu CPU pada setiap permintaan.
Andrew Taylor
@AndrewTaylor, jadi itu sebabnya Anda sebaiknya menyimpannya setelah itu.
poige

Jawaban:

2

Google Pagespeed untuk Nginx melakukan minification, dan banyak hal lainnya. Namun ketika saya melakukan benchmark, itu tidak membuat banyak perbedaan untuk diganggu, mengingat situs saya sudah dioptimalkan dengan baik. Untuk situs yang belum dioptimalkan mungkin akan membuat perbedaan yang signifikan.

Ada tutorial tentang cara membuat Nginx / Pagespeed bekerja di sini . Anda harus membuatnya dari sumber. Saya cenderung terus memperbarui situs web tertaut, jika saya menyentuh area itu, jadi mungkin lebih terkini daripada jawaban di bawah ini.

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

Rekomendasi saya: lupakan minify dan gunakan modul gzip . Ini akan bekerja lebih baik dan mencapai tujuan yang sama. Tetapi, tentu saja, Anda bisa melakukannya. Ada modul pihak ke - 3 bernama strip , terutama untuk topik ini.


Contoh Konfigurasi 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
sumber
2
Bagus temukan. Namun, tampaknya tidak siap untuk produksi, jadi saya sarankan Anda untuk menggunakan gzip - menghemat lebih banyak daripada memperkecil HTML.
pjmorse
1
Jangan lupa menambahkan lagi gzip_typesseperti text/html.
Gerald
Perhatikan bahwa kompresi gzip halaman HTML di bawah TLS / SSL mungkin rentan terhadap BREACH .
Naglis