Tại sao tôi nên sử dụng CDN của Google cho jQuery?


169

Điều này có thể rõ ràng với một số người, nhưng tôi đã tự hỏi: tại sao tôi nên phụ thuộc vào máy chủ của Google để lưu trữ jQuery cho trang web của mình?

Có phải chỉ vì nó tải nhanh hơn theo cách này?



2
Không ai đề cập đến chính sách của Google về việc liên kết đến các tệp JS của họ (liên kết được cung cấp thường được tán thành), vì vậy, đây là URL mà Google đề cập đến điều này là OK và nhiều hơn về các thư viện họ lưu trữ: code.google.com/apis/ajaxlibs/ tài liệu / index.html
Loftx


1
Nhiều người dùng đã tải xuống jQuery từ Google hoặc Microsoft khi truy cập một trang web khác. Do đó, nó sẽ được tải từ bộ đệm khi họ truy cập trang web của bạn, điều này dẫn đến thời gian tải nhanh hơn
AminM

Bạn không nên sử dụng Microsoft hoặc Google. Sử dụng MaxCDN. Nhiều khả năng bị tấn công bộ nhớ cache, đó là điều quan trọng nhất ở đây blog.jquery.com/2014/01/14/iêu
0fnt

Câu trả lời:


393

Điều này là do:

  1. Nó làm tăng tính song song có sẵn.
    (Hầu hết các trình duyệt sẽ chỉ tải xuống 3 hoặc 4 tệp cùng một lúc từ bất kỳ trang web cụ thể nào.)

  2. Nó làm tăng khả năng sẽ có một lần nhấn cache.
    (Khi nhiều trang web tuân theo thực tiễn này, nhiều người dùng đã sẵn sàng tệp.)

  3. Nó đảm bảo rằng tải trọng sẽ càng nhỏ càng tốt.
    (Google có thể nén trước tệp ở một loạt các định dạng (như GZIP hoặc DEFLATE). Điều này làm cho thời gian tải xuống rất nhỏ, vì nó siêu nén và không bị nén khi đang di chuyển.)

  4. Nó làm giảm lượng băng thông được sử dụng bởi máy chủ của bạn.
    (Google về cơ bản là cung cấp băng thông miễn phí.)

  5. Nó đảm bảo rằng người dùng sẽ nhận được phản hồi gần về mặt địa lý.
    (Google có máy chủ trên toàn thế giới, tiếp tục giảm độ trễ.)

  6. (Tùy chọn) Họ sẽ tự động cập nhật tập lệnh của bạn.
    (Nếu bạn muốn "bay qua chỗ ngồi của quần", bạn luôn có thể sử dụng phiên bản mới nhất của bất kỳ tập lệnh nào mà họ cung cấp. Những thứ này có thể sửa các lỗ hổng bảo mật, nhưng nói chung chỉ là phá vỡ nội dung của bạn.)

10
Tôi thích cách bạn tiếp tục đưa ra ngày càng nhiều lý do. +1 cho điều đó một mình.
Matchu

6. Máy chủ của Google có thể nhanh hơn máy chủ của bạn! Tôi không chắc chắn điểm 3 thực sự có liên quan vì bất kỳ ai cũng có thể rút gọn cũng như google. +1 cho câu trả lời tuyệt vời :)
Paul Creasey

1
Tôi cảm thấy như # 3 có thể liên quan nhiều hơn đến gzip và tương tự, vì jQuery đã đưa ra một phiên bản rút gọn.
Matchu

2
Chúa mọi người đang tấn công tôi, tôi vừa gửi ý tưởng của mình, và được chấp nhận, LOL
Farshad

1
@farshad: Không tấn công bạn, tấn công câu trả lời được chấp nhận không tốt như câu trả lời tiếp theo. Đó là cách Q & A cộng đồng hoạt động. Hãy thử định dạng câu trả lời của bạn một cách chuyên nghiệp hơn vào lần tới và hạn chế sự chỉ trích của bạn về câu hỏi đối với loại hữu ích, mang tính xây dựng.
Joel

58

Có một số tình huống khi bạn có thể không muốn sử dụng jQuery từ CDN của Google:

  1. Khi bạn đang xây dựng một ứng dụng mạng nội bộ nơi máy chủ web được lưu trữ trên cùng một mạng với các máy khách. Nếu bạn sử dụng jQuery CDN của Google, bạn sẽ thực hiện cuộc gọi tới internet chứ không phải là máy chủ web trên mạng cục bộ. Điều này làm tăng băng thông cho tổ chức của bạn và chậm hơn.

  2. Khi bạn muốn chạy ứng dụng của mình nhé . (Khá liên quan đến vấn đề đầu tiên) Nếu bạn cần làm việc trên môi trường phát triển (ví dụ như được quản lý bằng Bower ), bạn có thể cần phải làm cho ứng dụng của mình hoạt động mà không cần kết nối internet (ví dụ: trong một chuyến tàu :)

  3. Khi bạn cần tùy chỉnh nó . Ví dụ: nếu bạn sử dụng Grunt để xây dựng thư viện để chỉ sử dụng một số mô-đun nhất định hoặc đặt tên AMD

  4. Khi bạn đang phục vụ các trang qua SSL yêu cầu jQuery. Bạn nên phục vụ JavaScript qua SSL cũng như trang của bạn để tránh các vấn đề và cảnh báo bảo mật.

Ngoài ra, Microsoft lưu trữ jQuery trên CDN của họ. Đó là một lựa chọn khác có thể so sánh với việc sử dụng jQuery được lưu trữ của Google.


35
Chỉ cần một FYI là bạn có thể sử dụng các máy chủ của Google để phục vụ phiên bản SSL của các thư viện javascript được lưu trữ. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js hoạt động.
Aaron Wagner

Thật tốt khi biết, Aaron. Cảm ơn.
Lance Fisher

3
+1 để đề cập đến Microsoft. Google được cách tín dụng quá nhiều imo.
Có Barry

7
Ngoài ra FYI: Sơ đồ liên kết tương đối, như src="//ajax.googleapis.com/...", làm việc.
John Gietzen

3
Và cũng xem xét cndjs
Bryce

29

Nghiên cứu này của TJ VanToll đã thuyết phục tôi rằng tốt hơn là kết hợp jQuery với các tập lệnh khác thay vì tải nó từ CDN.

Lý do là độ trễ liên quan đến tìm nạp jQuery trên thiết bị di động:

"Vào năm 2012, thời gian RTT trung bình trên mạng di động ở Hoa Kỳ là 344ms. Và 344ms đó không chỉ áp dụng cho mọi yêu cầu HTTP - mà trang web trung bình hiện thực hiện 93 - mà còn cả tra cứu DNS và kết nối TCP ... Trong khi các RTT trung bình đang được cải thiện, chỉ có những lợi ích bổ sung nhỏ cần có, vì các mạng hiện tại nằm trong một yếu tố nhỏ của giới hạn lý thuyết được quy định bởi vật lý. "

Ông cũng trích dẫn bài đăng này từ Steve Souder cho thấy lý do tại sao bạn thực sự không có khả năng nhận được lợi ích bộ đệm từ việc sử dụng CDN:

"Do sự phân mảnh trong các nhà cung cấp CDN, các phiên bản jQuery và sử dụng giao thức (http so với https), nên khả năng bị tấn công bộ đệm CDN là rất thấp - và tải xuống từ một miền bên ngoài có khả năng thực hiện không phải một, mà là ba các chuyến đi khứ hồi (tra cứu DNS, kết nối TCP và HTTP GET). "


3
Điều này không còn đúng với HTTP2 và SPDY. Hôm nay bạn có thể lưu trữ tất cả các tài nguyên bên ngoài của mình trong một CDN như Cdnjs.com hoặc một cái gì đó và tất cả các tệp sẽ được tải xuống bằng cùng một yêu cầu. Đó là cơ bản giống như concatenate.
Ricardo Polo Jaramillo

13

Lợi ích lớn nhất là từ bộ nhớ đệm. Lý thuyết là nếu khách truy cập đã truy cập trang web đang tải thư viện JavaScript của họ, ví dụ jQuery từ Google CDN, thì khi họ truy cập trang web của bạn, thư viện đã có trong bộ đệm của trình duyệt của người dùng đó và sẽ không phải tải xuống lại . Điều này nghe có vẻ tuyệt vời trong lý thuyết.

Những lợi ích đang được chia sẻ ở đây và những nơi khác đều là lý thuyết. Chỉ cần đi qua một phân tích chuyên sâu về việc sử dụng CDN và nếu nó cung cấp các lợi ích hiệu suất mong đợi. http://www.root777.com/appdev/does-USE-google-lologists-api-cdn-give-you-performance-benefits


Câu trả lời này được đánh giá thấp. Nó cung cấp "khuyết điểm" hợp lệ tương đương với câu trả lời "pro" được chấp nhận ở trên.
Thomas Wana

@ user239558 Liên kết sẽ không bị chết nếu tác giả của nghiên cứu đã thực sự sử dụng CDN ;-) Lỗi là: [function.require]: không thể mở luồng: Không có tệp hoặc thư mục như vậy trong / homepages / 41 / d222999437 /htdocs/wp-content/theme/prose/fifts.php
jplandrain

Bài báo không được nghĩ ra. Nó nói rằng các lib lib ít phổ biến nhất được Google CDN phục vụ trên khoảng 0,5% tất cả các trang. Trong một phiên duyệt web chung, tôi truy cập vô số trang, đặc biệt là các liên kết nhỏ đến các trang web, ví dụ như trang lưu trữ nó. Hoặc các trang blog. Tôi dễ dàng truy cập 30 trang web độc đáo mỗi ngày, sau một tuần cơ hội không lưu nó vào bộ nhớ cache là khá mong manh. Mặc dù nó có thể không được lưu trong bộ nhớ cache cho tất cả người dùng của bạn, nhưng những người sử dụng internet rộng rãi sẽ luôn luôn lưu chúng vào bộ nhớ cache, vì họ truy cập tổng cộng hơn 1 tên miền.
Aidiakapi

8

Một lý do chính KHÔNG để Google lưu trữ jQuery của bạn, một lý do mà nhiều người không nghĩ tới, đó là nó sẽ không tải xuống nếu bạn ở Trung Quốc. Nó bị chặn cùng với nhiều tập lệnh, phông chữ khác, v.v ... được lưu trữ bởi Google CDN. Nếu bạn cần tiếp cận đối tượng người Trung Quốc, tốt nhất bạn luôn luôn sử dụng dịch vụ lưu trữ được lưu trữ trên máy chủ của riêng bạn. Google APIS bị chặn ở Trung Quốc


Tôi không đồng ý @tmthydvnprt. Câu hỏi có nhiều ý kiến, vì vậy đó hầu hết là lỗi bắt đầu từ đâu, nhưng điều này không trả lời được câu hỏi.
Tạm biệt StackExchange

1
Tôi đến đây để cùng một điều. Nếu người dùng ở Trung Quốc, hầu hết mọi thứ từ Google đều bị chặn bởi tường lửa tuyệt vời. Mặc dù vậy, đây có lẽ không phải là vấn đề vì rất nhiều người ở Trung Quốc sử dụng dịch vụ VPN và có lẽ bạn không muốn nhắm mục tiêu vào thị trường Trung Quốc.
Justin

0

Một số câu trả lời hay ở đây là "Tại sao bạn nên ..." và "Tại sao bạn không nên ..."

Tôi chỉ đơn giản muốn thêm một danh sách các lựa chọn thay thế cho Google nếu bạn muốn tải jQuery từ CDN.

Nhưng để tóm tắt, về cơ bản, bạn đang cải thiện hiệu suất trang web / ứng dụng tổng thể của mình.


0

Sử dụng CDN với Công nhân dịch vụ, bạn có thể tải xuống CDN một lần trong vòng đời của khách hàng và không phải mỗi khi bạn cập nhật mã của mình.

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.