2011-09-28 17 views
5

Tôi tò mò là tại sao các nhà phát triển Facebook đã chọn không kết hợp các tập lệnh và bảng định kiểu của họ vào các tệp đơn lẻ. Thay vào đó, chúng được nạp theo yêu cầu thông qua CDN của chúng. Facebook rõ ràng là một ứng dụng rất phức tạp và tôi có thể hiểu làm thế nào mô đun như vậy có thể làm cho Facebook dễ bảo trì hơn, nhưng không phải lời khuyên tối ưu hóa thông thường vẫn được áp dụng (đặc biệt là với mức độ sử dụng cao)?Tại sao Facebook không kết hợp các tệp CSS/JS của nó?

Hoặc, thực tế là họ đang sử dụng CDN tránh tác động hiệu suất thông thường của việc có rất nhiều tập lệnh/kiểu nhỏ?

+0

Hầu hết người dùng Facebook mà tôi biết đều ở mọi thời điểm, do đó, không cần biết các tập lệnh và bản định kiểu được tải xuống từ đâu vì chúng sẽ nằm trong bộ nhớ cache của trình duyệt. – nnnnnn

Trả lời

5

Trong một từ BigPipe. Họ chia trang thành 'pagelets', mỗi trang được xử lý riêng trên máy chủ của họ và được gửi song song tới trình duyệt. Về cơ bản hầu như tất cả mọi thứ (CSS, JS, hình ảnh, nội dung) được tải xuống, do đó, nó đi xuống trong một loạt các tệp nhỏ.

+0

Liên kết BigPipe là một bài đọc hấp dẫn, cảm ơn! –

+0

Phiên bản mới nhất của Yahoo! Thư cũng [sử dụng một kỹ thuật tương tự] (http://yuilibrary.com/theater/dan-hunt/yuiconf2010-hunt/). –

+1

Yahoo! đã chuyển nội dung [YUI Theater] (https://www.youtube.com/user/yuilibrary?feature=watch) của họ lên YouTube. Bài giảng tôi liên kết [trong bình luận trước là ở đó] (https://www.youtube.com/watch?v=i6S4hY4Oamk), toàn bộ điều thú vị nhưng nếu bạn muốn bạn có thể [nhảy tới phần mới của họ Hệ thống giống như BigPipe] (https://www.youtube.com/watch?v=i6S4hY4Oamk#t=917s). –

5

Chúng có thể đang chạy trong trường hợp tiết kiệm khả năng phân phối các kết hợp tệp JS khác nhau cho trình duyệt vào các thời điểm khác nhau (cho các trang khác nhau hoặc cấu hình ứng dụng khác nhau cho người dùng khác nhau). yêu cầu kết hợp tất cả các tệp thành một.

Nếu trình duyệt chỉ thực thi một phần nhỏ trong tổng số mã JS tại bất kỳ thời điểm nào, thì điều này sẽ có ý nghĩa. Bởi vì họ có rất nhiều người dùng khác nhau và các phần khác nhau của các ứng dụng khác nhau chạy trong các cấu hình khác nhau cho những người dùng đó, có thể cho rằng đây là trường hợp.

Thứ hai, các tệp đó chỉ cần tải xuống một lần, sau đó trình duyệt sẽ không yêu cầu lại cho đến khi chúng thay đổi hoặc bộ nhớ cache đã hết hạn, vì vậy chỉ lần truy cập đầu tiên thực sự được hưởng lợi từ kiểu tất cả trong một . Và có và có CDN tiên tiến với nhiều địa điểm cạnh trên toàn thế giới chắc chắn sẽ giúp.

+0

cảm ơn phản hồi của bạn, liên kết BigPipe trong câu trả lời được chấp nhận cung cấp giải thích chính xác từ chính Facebook. Câu trả lời của bạn cũng rất hữu ích nhưng tiếc là tôi chỉ có thể chấp nhận một câu trả lời. cảm ơn lần nữa –

0

Có thể họ cho rằng có nhiều khả năng bạn truy cập Facebook thường xuyên hơn là bạn xóa bộ nhớ cache của trình duyệt.

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