2013-03-16 26 views
6

Tôi đang sử dụng UglifyJS 2 để nối và rút gọn một loạt tệp JavaScript (không quá nhiều, khoảng 5 đến 10). Quá trình này được chạy từ bên trong Node.js bằng cách sử dụng cài đặt mặc định của UglifyJS 2.Làm thế nào để tăng tốc quá trình rút gọn của UglifyJS 2?

Các tệp cơ bản là Require.js, jQuery, Backbone.js, Backbone.js Marionette, Moment.js và một số bổ sung (nhỏ hơn) các tệp trợ giúp, tất cả trong các phiên bản không nén (tức là phát triển).

Vấn đề là quá trình này gần như mất 10 giây.

Nếu tôi vô hiệu hóa việc rút gọn hoàn toàn bằng bàn giao

{ compress: false } 

như một lựa chọn, đó là nhanh hơn rất nhiều, nhưng nó vẫn mất khoảng 2 giây.

Câu hỏi # 1: Thông thường UglifyJS 2 có mất rằng dài ngay cả đối với một vài tệp không? Hay tôi có thể làm điều gì đó sai?

Câu hỏi # 2: Làm cách nào để tăng tốc quá trình này mà không vô hiệu hóa tất cả các tùy chọn hữu ích của UglifyJS 2?

+0

Chúng tôi không có đầu mối về kích thước tệp của bạn. Tôi có một dự án JS mất khoảng 7-8 giây để nén. Dự án là khoảng 7 tệp, mỗi tệp trong số đó có khoảng 400-500 dòng. – Adi

+0

Tôi đã cập nhật câu hỏi của mình, nhưng nhận xét của bạn đã chỉ ra rằng việc lấy nhiều giây dường như là bình thường đối với kịch bản của tôi. Cảm ơn :-)! –

+0

Bạn KHÔNG khai thác các tệp này theo mọi yêu cầu, phải không? – Mchl

Trả lời

7

Nó không phải là không phổ biến mà bộ giải mã mất một vài giây để nén nhiều tệp lớn. 8-12 giây là không sao trong trường hợp của bạn (nhiều thư viện lớn).

Tuy nhiên, tôi khuyên bạn không nên tự nén các thư viện này. Hầu hết trong số họ có một đội ngũ các nhà phát triển đằng sau họ có thực sự biết những gì họ đang làm, tôi khuyên bạn nên tải các phiên bản minified từ nguồn và làm đơn giản như

copy *.min.js allLibraries.js 

hoặc

cp *.min.js allLibraries.js 

Note : Đảm bảo bạn ghép nối đúng thứ tự, điều này thường có nghĩa là The main libraries -> The plugins -> Your code.

Để tăng tốc, ngoài việc tắt các tính năng thú vị như nén mạnh, bạn không thể làm gì nhiều.

+0

Vì vậy, điều này có nghĩa là, có được các phiên bản rút gọn, chỉ nén các tệp của riêng tôi bằng cách sử dụng một công cụ như Uglify JS, và sau đó concat chúng, phải không? –

+1

Vâng, thành thật mà nói, đây là những gì _I_ làm. Có thể có một số ý kiến ​​ở đó nói khác đi. – Adi

+5

Hey downvoter, xin vui lòng giúp tôi cải thiện câu trả lời của tôi? Xin vui lòng cho tôi biết những gì tôi đã sai vì vậy tôi có thể sửa nó. – Adi

11

Nếu bạn đặt tùy chọn nén không sử dụng thành sai, nó sẽ tăng tốc độ lên một chút. Tôi nhận được của tôi từ 11 giây đến 5,5 giây với điều đó.

{ 
     compress: { 
      unused: false 
     } 
    } 

Ít hơn mức chênh lệch 2k khi tắt.

+0

Tìm kiếm tốt, tôi đã đi từ 28s đến 8s. Xem lại số lượng tệp đã lưu, nó đã lưu tôi khoảng 1kb (trên một tệp khoảng 1,3MB) để loại bỏ mã không sử dụng (tôi đã dự kiến ​​sẽ lớn hơn nhiều). Tôi sẽ cải thiện tốc độ 20 giây! – ryanm

+3

Đây phải là câu trả lời được chấp nhận. Cải thiện tốc độ là rất lớn – woens

+0

@ woens Điều này chỉ nên hoạt động trên cơ sở từng trường hợp. Như trong, sự khác biệt có thể lớn hơn 1kb tùy thuộc vào số lượng thư viện bạn cần đưa vào dự án của bạn. – dosaki

Các vấn đề liên quan