2011-09-16 38 views
39

Để cải thiện hiệu suất của các trang web của chúng tôi, chúng tôi khuyên bạn nên sử dụng CDN s để phân phát các tệp .js trên các trang web của chúng tôi. Điều đó có ý nghĩa.Kết hợp các tệp .js với CDN

Ngoài ra, chúng tôi khuyên bạn nên nhóm các tệp .js của chúng tôi để giảm số lượng yêu cầu đang được thực hiện cho máy chủ khi tải.

Vì vậy, chúng tôi cần phải ngồi xuống và đưa ra quyết định giữa nếu chúng tôi sử dụng CDN hoặc gói .js tệp.

Ưu và khuyết điểm là gì? Cái nào có ý nghĩa hơn?

+0

Chỉ sử dụng CDN * cho tệp .js có vẻ như là một quyết định lạ. :) – bzlm

+2

@bzlm Có phải không? không cho nhiều người khó khăn. – tugberk

+0

ý của bạn là gì? Trừ khi ứng dụng của bạn được tạo thành hầu hết các tệp .js, đó không phải là điều sẽ gây ra độ trễ và chậm đi, vì chúng dễ dàng hợp nhất, nén và bộ nhớ cache ở phía máy khách. – bzlm

Trả lời

13

Tại sao bạn không thể nhóm chúng đặt chúng là CDN? Nó khó có thể là quyết định của cái này hay cái kia?

Nếu bạn để chọn một hoặc loại kia, tùy thuộc vào số lượng tệp .js bạn đang đưa vào. Đối với một số lượng tệp nhỏ, tôi muốn đề xuất rằng CDN sẽ nhanh hơn, cho số lượng tệp lớn hơn, một gói gồm .js tệp sẽ chắc chắn sẽ nhanh hơn. Trường hợp chuyển đổi sẽ là, là một cái gì đó để bạn có thể thử nghiệm.

+0

còn giai đoạn phát triển thì sao? Nó làm cho dự án của bạn được kết hợp chặt chẽ. – tugberk

+3

@tugberk: Nó không hoạt động như thế. Bạn viết một kịch bản xây dựng kết hợp các tệp Javascript với nhau khi bạn phát hành ứng dụng. Trong cùng một bước, bạn cũng có thể * giảm thiểu * các tệp, điều này sẽ làm giảm kích thước tệp JavaScript của bạn. – Matt

+0

vì vậy, bạn cần một quy trình để xử lý công việc này. Hmm, nó đòi hỏi một ý nghĩ nhưng rất có ý nghĩa. – tugberk

12

Câu trả lời của tôi: cả hai. Kết hợp chúng và đặt chúng trên CDN.

Nhược điểm của việc này? Phụ thuộc. Bạn xây dựng quy trình trông như thế nào? Bạn có thể dễ dàng tự động hóa việc đóng gói và rút gọn? Bạn đang sử dụng Yahoo YUI hoặc Google Closure hay cái gì khác?

Ngoài ra, nếu có rất nhiều GUI phụ thuộc jQuery có thể có một số ma sát tiêu tốn thời gian do thay đổi liên tục các yếu tố/hiệu ứng/css.

Thử nghiệm cũng rất quan trọng vì do có thể làm giảm thiểu quirks.

Dòng dưới cùng: 5 tệp javascript an toàn được đóng gói thành 1 tệp === 4 yêu cầu ít hơn.

Trang có chỉ Html cũ và một tham chiếu javascript bên ngoài === 2 yêu cầu tới máy chủ của bạn. Tuy nhiên, một trang chỉ với html thuần túy cũ và một tham chiếu javascript bên ngoài trên yêu cầu CDN === 1 đến máy chủ của bạn.

Hiện tại, chúng tôi đang sử dụng các công cụ Đóng cửa của Google. Các Google Closure Inspector giúp với những điều sau đây:

Trình biên dịch đóng gói sửa đổi mã JavaScript ban đầu của bạn và tạo mã nhỏ hơn và hiệu quả hơn bản gốc, nhưng khó đọc và gỡ lỗi hơn. Trình kiểm tra đóng cửa giúp bằng cách cung cấp tính năng lập bản đồ nguồn, xác định dòng mã nguồn gốc tương ứng với mã được biên dịch.

+0

Kết hợp chúng lại với nhau không quá phức tạp đối với tôi. Điều khiến tôi nghĩ là nơi tôi có thể đặt chúng. Bạn có biết bất kỳ nhà cung cấp tốt không? Ngoài ra, tôi có CDN của riêng mình. Nó xử lý các tiêu đề Cache-Control, If-Modified-Since, If-None-Match. Nhưng không hỗ trợ GEO. – tugberk

+0

Tôi đã sử dụng Tập tin đám mây Rackspace - http://www.rackspace.com/cloud/cloud_hosting_products/files/ trong sáu tháng - không có vấn đề và tích hợp với CDN Akamai. –

0

Như những người khác đã nêu, câu trả lời là cả hai nếu có thể. Đóng gói (và rút gọn) mang lại lợi ích cho người dùng của bạn vì nó làm giảm trọng lượng trang. CDN mang lại lợi ích cho máy chủ của bạn vì bạn đang giảm tải công việc. Nói chung, bạn không cần phải tối ưu hóa trừ khi bạn đã quan sát các vấn đề về hiệu suất hoặc bạn không có gì tốt hơn để làm.

0

Có một vài điều bạn cần phải suy nghĩ về ...

Bao nhiêu của JS Bạn cần phải tải sớm trong tải trang, và bao nhiêu bạn có thể trì hoãn cho đến sau này?

Nếu bạn có thể trì hoãn việc tải JS (ví dụ: đặt nó ở cuối trang) hoặc tải nó không đồng bộ như Google Analytics, thì bạn sẽ giảm thiểu lượng thời gian tải xuống JS chi tiêu chặn chuỗi giao diện người dùng.

Sau khi tìm hiểu cách tải của JS có thể được chia, tôi sẽ giải quyết việc hợp nhất/rút gọn các tệp JS khác nhau - cắt giảm các yêu cầu HTTP là chìa khóa để cải thiện hiệu suất.

Sau đó xem xét di chuyển sang CDN và đảm bảo CDN có thể phục vụ nội dung JS được nén và cho phép bạn đặt tiêu đề sao cho nó "được lưu vào bộ nhớ mãi mãi" (bạn sẽ cần phiên bản tệp nếu bạn lưu vào bộ nhớ cache vĩnh viễn). CDN giúp giảm độ trễ nhưng cũng sẽ giảm kích thước bằng cách không nấu nướng

Điều khác bạn có thể muốn xem xét là thiết lập tên miền riêng cho nội dung tĩnh, trỏ đến máy chủ của bạn khi bạn sắp xếp mọi thứ rồi chuyển sang CDN nếu nó có giá trị.

Andy

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