Github có nên được sử dụng làm CDN cho các thư viện javascript không? [đóng cửa]


94

Cung cấp các thư viện javascript từ CDN thay vì máy chủ của riêng bạn đi kèm với những lợi thế to lớn. Ít công việc hơn cho máy chủ của bạn, khả năng CDN có một bản sao gần với người dùng hơn máy chủ của bạn, nhưng quan trọng nhất là một cơ hội tốt mà trình duyệt của người dùng của bạn đã lưu vào bộ nhớ cache từ URL đó. Điều cuối cùng có nghĩa là tổng số công việc cho tất cả mọi người ít hơn, vì vậy rõ ràng đó là một chiến thắng và có nhiều khả năng chúng tôi (nhà phát triển) dựa vào CDN để phục vụ javascript của chúng tôi thường xuyên hơn.

Nhưng các CDN javascript phổ biến (Google, Microsoft, các hãng khác?) Chỉ lưu trữ một số lượng nhỏ tệp. Đối với những người khác, chúng tôi có quyền tự lưu trữ chúng hoặc ... sử dụng máy chủ điều khiển nguồn như một loại CDN. Không có khả năng Github hoặc tương tự có bộ nhớ cache được phân phối theo địa lý của các tệp được tối ưu hóa để phân phát trên toàn cầu. Nhưng nếu đó là thông lệ, thì có khả năng trình duyệt của người dùng sẽ được lưu vào bộ nhớ cache. Lập luận về việc giảm tải công việc từ máy chủ của chúng tôi sang github chỉ có giá trị nếu Github sẵn sàng tình nguyện làm điều này.

Vì vậy, nó là thông lệ? Chúng ta có nên khuyến khích nhau làm điều này không? Github có phiền không? Họ có chính sách chính thức được nêu ra không?


5
Điều gì xảy ra nếu tác giả sắp xếp lại cấu trúc tệp của mình? Đó không phải là mã vấn đề của anh ấy trên hàng trăm trang web bị lỗi.
Raynos

2
@Raynos Nếu bạn là "tác giả" của repo GitHub thì bạn kiểm soát các thay đổi.
Chris Jacob

2
@ChrisJacob đó là vấn đề. Nếu tôi thay đổi cấu trúc tệp của chính mình, đó không phải là vấn đề của tôi, việc bạn trỏ vào một đoạn mã không còn tồn tại nữa.
Raynos

5
Bạn có thể sử dụng rawgithub.com để chia sẻ HTML, JavaScript hoặc CSS đang tiến hành với ai đó để có bản demo nhanh hoặc có thể sử dụng nó trong thử nghiệm jsPerf.
Giovanni Cappellotto

Câu hỏi nên được mở lại vì hiện đã có câu trả lời đúng trong nhận xét ở trên từ @GiovanniCappellotto.
Supersharp

Câu trả lời:


93

Bạn không nên làm điều đó đối với các tệp JavaScript nếu bạn quan tâm đến hiệu suất hoặc khả năng tương thích của IE9.

GitHub không cung cấp các tệp "thô" có tiêu đề hết hạn trong tương lai xa. Nếu không có khả năng lưu vào bộ nhớ đệm trên nhiều trang web, bạn sẽ mất lợi ích lớn nhất khi sử dụng CDN công khai để lưu trữ JavaScript của mình. Trên thực tế, việc sử dụng GitHub làm CDN sẽ chậm hơn so với việc chỉ lưu trữ tệp trên máy chủ của riêng bạn sau yêu cầu đầu tiên của người dùng đối với tệp (giả sử bạn định cấu hình bộ nhớ đệm chính xác trên máy chủ của mình).

Một vấn đề khác là GitHub không phân phối các tệp "thô" có tiêu đề kiểu nội dung khớp với kiểu MIME thực tế của tệp. Trong IE9 (và có thể cả các trình duyệt / proxy / tường lửa / v.v. khác), các tệp JavaScript không được cung cấp với loại nội dung chính xác sẽ bị chặn theo mặc định. Bạn có thể thấy điều đó đang hoạt động trên trang demo BlockUI, ví dụ:

nhập mô tả hình ảnh ở đây


10
Ngoài ra ... "Khi bạn yêu cầu tệp thô như vậy, bạn không trực tiếp truy cập tệp từ hệ thống tệp! Bạn cũng đang trải qua các lớp mã ứng dụng, điều này chắc chắn sẽ làm chậm trang web của bạn. Đừng làm như vậy . Thay vào đó, hãy tạo một nhánh gh-pages và tải nó từ đó "- viatropos.com/blog/github-as-a-cdn
Chris Jacob

RawGit cung cấp các tệp thô trực tiếp từ GitHub với các tiêu đề Loại-Nội dung phù hợp. Sử dụng một thẻ cụ thể hoặc mã băm cam kết trong URL (không phải một nhánh). Các tệp được lưu trữ vĩnh viễn dựa trên URL. rawgit.com
Kerem Baydoğan


11

Điều này gần đây đã được hỏi trong các diễn đàn hỗ trợ của github và câu trả lời chính thức là nó ổn.

Có nói rằng, tôi đồng ý với câu trả lời khác: github không bao giờ thực sự có nghĩa là một CDN, trong khi Google và Microsoft có cơ sở hạ tầng cụ thể cho điều đó.


7
Làm rõ. Phản hồi của diễn đàn hỗ trợ đó có liên quan đến bài viết mà tôi đã liên kết đến trong câu trả lời của mình (Trang GitHub dưới dạng CDN - không phải tệp "thô" của GitHub): stackoverflow.com/questions/5502540/… ).
Chris Jacob

10

Nó tốt cho việc tạo mẫu / nội dung cá nhân, nhưng đối với sản xuất, tôi sẽ xem xét:

http://www.cdnjs.com/

http://cachedcommons.org/ - không còn nữa


Tôi hy vọng bạn biết CachedCommons.com chỉ được phân phát từ github.com
ocodo

Nhưng các url dường như trỏ đến CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , tôi đoán có thể là một proxy.
meleyal

Xin lỗi, ý tôi là thông tin cũ về việc sử dụng Github làm CDN dường như không còn được áp dụng nữa, và tất cả đều tốt. Ngoài các vấn đề về tính khả dụng có thể xảy ra trong tương lai, bạn nên xây dựng một thư viện để tránh điều này.
ocodo,

2
Có vẻ như liên kết với Github sẽ sớm không còn là một tùy chọn: github.com/blog/…
meleyal

1
Thực ra đó không phải là vấn đề, nếu bạn định sử dụng tài nguyên dựa trên GitHub làm cdn, chỉ cần đảm bảo rằng nó được lưu trữ như một phần của trang web trang tĩnh (bây giờ là GitHub.io) - Đó là cách bạn nên làm trong vị trí đầu tiên bằng cách này.
ocodo

-2

Tôi đang làm điều đó trong nhiều tháng nay, trước tiên có một số lo ngại nhưng hoàn toàn tuyệt vời nếu bạn không gặp vấn đề gì với việc các tệp của mình được công bố công khai, hãy sử dụng các phiên bản rút gọn nếu bạn quan tâm.

Nhưng vẫn còn - Google & MS quản lý không gian cho các Mẫu jQuery & jQuery - vì vậy tôi sử dụng chúng cho việc đó.

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.