Mengapa minifikasi HTML / Javascript bermanfaat

14

Mengapa minifikasi HTML / Javascript bermanfaat ketika protokol HTTP sudah mendukung kompresi data gzip?

Saya menyadari bahwa Javascript / HTML minification memiliki potensi untuk secara signifikan mengurangi ukuran Javascript / HTML file dengan menghapus spasi yang tidak perlu, dan mungkin mengubah nama variabel untuk beberapa huruf masing-masing, tetapi tidak algoritma LZW lakukan terutama baik ketika ada banyak diulang karakter (mis. banyak spasi kosong?)

Saya menyadari bahwa beberapa alat minifikasi Javascript melakukan lebih dari sekedar mengurangi ukuran. Kompilator penutupan Google, misalnya, juga mencoba untuk meningkatkan kinerja kode dengan menguraikan fungsi dan melakukan analisis lainnya. Tetapi tujuan utama dari minifikasi Javascript biasanya untuk mengurangi ukuran file.

Saya juga menyadari ada alasan lain yang mungkin ingin Anda minimalkan selain performace, seperti kebingungan kode. Tetapi sekali lagi, alasan itu biasanya tidak ditekankan sebanyak kenaikan kinerja dan pengurangan ukuran file. Misalnya, Closure Compiler tidak diiklankan sebagai alat kebingungan, tetapi sebagai peredam ukuran kode dan penambah kecepatan unduh.

Jadi, berapa banyak kinerja yang Anda dapatkan dari Javascript / HTML minification ketika Anda sudah secara signifikan mengurangi ukuran file dengan kompresi gzip?

Channel72
sumber

Jawaban:

11

Karena kompresi gzip memang memiliki overhead sendiri (CPU). Minifikasi adalah kompresi "low hanging" pertama yang dapat diterapkan tanpa CPU hit.

Namun ini mungkin tampak tidak signifikan, angka segera masuk akal ketika skala terlibat.

Selanjutnya, dengan minifikasi, Anda memiliki lebih sedikit gzip.

Malam gelap
sumber
3
Akankah server web modern benar-benar gzip file javascript untuk setiap permintaan? Tampaknya server akan men-cache konten gzip statis, karena kemungkinan tidak akan berubah.
aaberg
@ aaberg Meski begitu, itu lebih banyak data yang di-cache di server. (Bukan berarti caching tidak baik)
menggigil 42
@ chilis42: Server dapat melayani file pre-gzipped dari filesystem itu sendiri, jika itu masalahnya.
herby
+1 untuk skala. Jika Anda memiliki 10 pengguna dan 100 klik sehari itu tidak relevan. Jika Anda perlu mencapai 100k hit server satu jam itu adalah penghematan besar.
SoylentGray
2
Sesuatu memberi tahu saya bahwa menjalankan kompiler JavaScript skala penuh dan beberapa optimisasi berjalan pada representasi internal, semua itu sering diimplementasikan di Jawa bukanlah overhead CPU yang rendah .
Oleg V. Volkov
5

Minifikasi + gzip umumnya memberikan hasil yang lebih baik, karena gzip adalah algoritma umum, tidak secara khusus disesuaikan dengan satu input atau lainnya, sedangkan minificator menyadari tentang kontennya dan dapat melakukan pekerjaan yang tidak dapat dilakukan oleh algoritma kompresi umum. Itu bisa menjadi lossy juga (berpikir: sepenuhnya menghilangkan komentar dan spasi putih - itu kompresi 100% untuk data ini, bagaimana Anda bisa mengalahkan itu?), Sementara kompresi umum tidak bisa.

Oleg V. Volkov
sumber
2

Anda mungkin tidak mendapatkan terlalu banyak manfaat kinerja tetapi Anda masih akan mengurangi penggunaan bandwidth Anda. Jika Anda dapat mencukur beberapa kb dari file js (dan css) Anda melalui minifikasi (dan penggunaan sprite css untuk mengurangi jumlah permintaan) dan Anda melayani 1000 pengguna sehari, setelah sebulan Anda akan secara signifikan mengurangi bandwidth Anda.

Steve Whitehouse
sumber
1
+1: Minifikasi adalah tentang penghematan agregat. Mungkin membantu permintaan individu menjadi lebih cepat, tetapi intinya adalah mengurangi penggunaan bandwidth dari waktu ke waktu.
Joel Etherton
1

Satu-satunya hal paling mahal yang Anda lakukan dalam aplikasi web adalah mengirimkan segala sesuatunya. Mengirim lebih sedikit barang hampir selalu merupakan kemenangan bersih jika Anda membayar dalam siklus CPU.

Selain itu, saya tidak memiliki sesuatu yang ilmiah untuk mendukung hal ini, tetapi saya berharap bahwa alat minifikasi mungkin dapat mengompres javascript lebih baik daripada gzip jika tanpa alasan lain selain alat minifikasi spesifik domain dan dapat disesuaikan untuk kompres javascript yang lebih baik sedangkan gzip adalah alat generik dan akan berkompromi ke tengah.

Wyatt Barnett
sumber