2013-07-31 36 views
5

Để giảm thiểu số lượng yêu cầu được thực hiện cho máy chủ của tôi và cải thiện thời gian tải, tôi đã suy nghĩ về việc ghép tất cả các tệp JS của tôi, bao gồm các tệp js của nhà cung cấp như góc cạnh, jquery- ui, ... Đó là một thực tế phổ biến để làm điều này, nhưng tôi thường thấy các trang web không bao gồm các tệp JS của nhà cung cấp của họ trong cùng một tệp JS. Tôi biết rằng rất nhiều trang web sử dụng CDN để sử dụng lại phiên bản được lưu trong bộ nhớ cache của tệp JS mà một trang khác có thể đã sử dụng. Howewer, đôi khi, họ là nhà cung cấp các file JS riêng biệt mà được phục vụ trên cùng một máy chủ, ví dụ trên Github:Có bất kỳ nhược điểm nào để ghép tất cả các tệp JavaScript (bao gồm cả nhà cung cấp)

Github

Github có:

  • Frameworks.js chứa Modernizr, jQuery
  • github -... js chứa JS từ chính Github.

Có lý do cụ thể để làm điều này không? Có phải chúng là bất kỳ vấn đề nào có thể xuất hiện vì bạn concat tất cả các tệp JS của bạn?

Trả lời

3

Lý do chính là giảm thiểu số lượng yêu cầu http. Trong một dự án lớn hơn nếu bạn đang sử dụng một số mẫu như MV *, bạn có thể muốn trừu tượng từng mô-đun trong tệp .js bên ngoài. Điều này có thể dẫn đến nhiều tập tin 30-40 chẳng hạn. Trong trường hợp đó, bạn có thể muốn concat sau đó vào tập tin duy nhất.

Trong một dự án nhỏ hơn, nơi bạn sẽ có tệp 3-4 js, bạn sử dụng sau đó mà không cần nối. Tôi sử dụng requirejs để xác định các mô-đun như AMD và có mỗi mô-đun trong tập tin bên ngoài. Sau đó, tôi sử dụng kịch bản lệnh requirejs để quản lý tệp phụ thuộc và tệp triển khai được ghép nối.

công cụ tốt để tự động hóa quá trình này

-1

Hiệu suất khôn ngoan nó sẽ không tạo sự khác biệt. Nếu bạn cảm thấy khó chịu khi có một tệp riêng cho tất cả các khung công tác của mình, thì tôi đoán bạn có thể làm điều đó. Nếu không, bạn chỉ cần điền vào một tệp duy nhất và có thể có vấn đề khi cố cập nhật các khung công tác sau này.

2

Phụ thuộc vào cách đăng ký của bạn. Theo giả thuyết, nếu bạn có 20 tệp js là 0,5MB mỗi tệp. Chỉ cần có 2 (1MB) trên trang đầu tiên. Bạn có thể muốn giữ chúng riêng biệt và kết hợp những người khác. Tải những người khác ở chế độ trì hoãn trong khi trên trang đầu tiên. Vì vậy, kết hợp các tập tin là tốt khi bạn hiểu tất cả những gì để kết hợp. Theo nguyên tắc chung, nếu bạn có rất ít tệp, thì nó thực sự không tạo ra sự khác biệt rất lớn.

một số điều bạn nên suy nghĩ trước khi kết hợp tệp javascript,

khi bạn kết hợp 100 tệp với nhau. bạn đang cắt giảm 99 yêu cầu. Nhưng bạn cũng làm như sau:
* tăng thời gian cần để tải xuống tệp đơn đó (và có thể đang chặn tải một trang quan trọng)
* chiếm thời gian phân tích mã JS bổ sung mà chúng tôi kéo từ máy chủ, khi nó thậm chí có thể không được yêu cầu tại thời điểm này.Công cụ javascript đang ngày càng nhanh hơn, nhưng vẫn đúng, rằng số lượng thời gian đáng kể là được phân tích trong việc phân tích mã javascript.

như vậy, trong ngắn hạn câu trả lời là - "nó luôn luôn là một trò chơi thương mại-off và biết mã của bạn giúp tốt" :)

http://tomdale.net/2012/01/amd-is-not-the-answer/ là một chi thú vị trên đường tương tự.

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