Tại sao việc thu nhỏ HTML / Javascript có lợi


13

Tại sao việc thu nhỏ HTML / Javascript có lợi khi giao thức HTTP đã hỗ trợ nén dữ liệu gzip?

Tôi nhận ra rằng Javascript / HTML việc rút gọn có khả năng làm giảm đáng kể kích thước của Javascript / HTML file bằng cách loại bỏ các khoảng trắng không cần thiết, và có lẽ đổi tên biến vào một vài chữ cái mỗi, nhưng không các thuật toán LZW làm đặc biệt tốt khi có nhiều lặp đi lặp lại ký tự (ví dụ: nhiều khoảng trắng?)

Tôi nhận ra rằng một số công cụ thu nhỏ Javascript không chỉ làm giảm kích thước. Chẳng hạn, trình biên dịch đóng cửa của Google cũng cố gắng cải thiện hiệu suất mã bằng cách đặt các hàm và thực hiện các phân tích khác. Nhưng mục đích chính của thu nhỏ Javascript thường là giảm kích thước tệp.

Tôi cũng nhận ra rằng có những lý do khác mà bạn có thể muốn giảm thiểu ngoài hiệu suất, chẳng hạn như mã obfuscation. Nhưng một lần nữa, lý do đó thường không được nhấn mạnh nhiều như tăng hiệu suất và giảm kích thước tệp. Ví dụ, Trình biên dịch đóng cửa không được quảng cáo là một công cụ che giấu, mà là một công cụ giảm kích thước mã và tăng tốc độ tải xuống.

Vậy, bạn thực sự đạt được bao nhiêu hiệu suất từ ​​việc thu nhỏ Javascript / HTML khi bạn đã giảm đáng kể kích thước tệp bằng nén gzip?

Câu trả lời:


10

Bởi vì nén gzip không có chi phí hoạt động (CPU) riêng. Giảm thiểu là nén "treo thấp" đầu tiên có thể được áp dụng mà không cần CPU nhấn.

Những điều này có vẻ không đáng kể, tuy nhiên, những con số sẽ sớm có ý nghĩa khi quy mô có liên quan.

Hơn nữa, với việc thu nhỏ bạn có ít hơn gzip.


3
Các máy chủ web hiện đại có thực sự gzip các tệp javascript cho mọi yêu cầu không? Có vẻ như một máy chủ sẽ lưu trữ nội dung được nén bằng tĩnh, vì không thể thay đổi.
aaberg

@aaberg Mặc dù vậy, đó là dữ liệu được lưu trữ nhiều hơn trên máy chủ. (không phải bộ nhớ đệm không tốt)
ớn lạnh42

@ chilis42: Các máy chủ có thể cung cấp tệp được nén trước từ chính hệ thống tệp, nếu đó là vấn đề.
Herby

+1 cho tỷ lệ. Nếu bạn có 10 người dùng và 100 lượt truy cập mỗi ngày thì không liên quan. Nếu bạn cần máy chủ 100k lượt truy cập một giờ thì đó là một khoản tiết kiệm đáng kể.
SoylentGray

2
Một cái gì đó cho tôi biết rằng việc chạy trình biên dịch JavaScript quy mô đầy đủ và một số tối ưu hóa chạy trên biểu diễn bên trong, tất cả những gì nó thường được triển khai trong Java không phải là chi phí CPU thấp .
Oleg V. Volkov

5

Thu nhỏ + gzip thường cho kết quả tốt hơn, bởi vì gzip là thuật toán chung, không thích ứng cụ thể với đầu vào này hay đầu vào khác, trong khi đó, minificator nhận thức được nội dung của nó và có thể thực hiện được thuật toán nén chung. Nó cũng có khả năng bị mất (nghĩ: loại bỏ hoàn toàn các bình luận và khoảng trắng - đó là nén 100% cho dữ liệu này, làm thế nào bạn có thể đánh bại nó?), Trong khi nén chung thì không thể.


2

Bạn có thể không nhận được quá nhiều lợi ích hiệu suất nhưng bạn vẫn sẽ giảm mức sử dụng băng thông. Nếu bạn có thể loại bỏ một vài kb khỏi các tệp js (và css) của mình thông qua việc thu nhỏ (và sử dụng các sprite css để giảm số lượng yêu cầu) và bạn sẽ phục vụ 1000 người dùng mỗi ngày, sau một tháng bạn sẽ giảm đáng kể băng thông.


1
+1: Tối thiểu hóa là về tiết kiệm trong tổng hợp. Nó có thể giúp một yêu cầu cá nhân nhanh hơn, nhưng quan điểm của nó là giảm mức sử dụng băng thông theo thời gian.
Joel Etherton

1

Điều đắt tiền nhất bạn làm trong một ứng dụng web là gửi mọi thứ xuống dây. Gửi ít thứ hơn xuống dây hầu như luôn luôn là một chiến thắng ròng nếu bạn đang trả tiền theo chu kỳ CPU.

Ngoài ra, tôi không có bất cứ điều gì khoa học để hỗ trợ điều này, nhưng tôi hy vọng rằng các công cụ thu nhỏ có thể nén javascript tốt hơn gzip nếu không có lý do nào khác ngoài các công cụ rút gọn là tên miền cụ thể và có thể được điều chỉnh để nén javascript tốt hơn trong khi gzip là một công cụ chung và sẽ thỏa hiệp vào giữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.