Thư viện lưu trữ Google jQuery - nó có tốt không?


14

Có bất kỳ lợi ích thực tế nào khi sử dụng thư viện lưu trữ Google jQuery không? Hoặc chúng ta sẽ tải nó xuống máy chủ của chúng tôi?

Ý kiến ​​của bạn về điều này là gì?


1
Một woul tìm kiếm google đơn giản đã cung cấp câu trả lời ...
Francisco Presencia

Câu trả lời:


18

Có hai lợi ích chính khi sử dụng CDN bên ngoài như Google để lưu trữ jQuery:

  1. Nó nhanh hơn. Nó chắc chắn sẽ nhanh hơn trang web của bạn và có thể nhanh hơn bất kỳ CDN nào bạn tự thiết lập.
  2. Nó có thể đã được lưu trữ . Rất nhiều trang web tham khảo jQuery trên CDN của Google, vì vậy nếu họ đã truy cập một trang web khác trước nó, bạn thậm chí sẽ không cần phải tải xuống.

Nhược điểm tiềm năng:

  1. Các miền có thể bị chặn (điều này là khá phổ biến ở những nơi như Trung Quốc). Bạn có thể giải quyết điều này bằng cách có một dự phòng cục bộ ( xem tại đây để biết cách làm ).
  2. Sự phân mảnh của số phiên bản khá cao, vì vậy khách truy cập vào trang web của bạn có thể có nhiều phiên bản khác nhau được lưu trong bộ nhớ cache, nhưng không phải là phiên bản bạn đã tham chiếu ( xem tại đây để biết một số thống kê gần đây ). Đây chỉ là một vấn đề về tải trang đầu tiên.

3
Bạn có thể gửi một tài liệu tham khảo cho cách thiết lập một dự phòng địa phương?
Stephen Ostermiller

1
Như Zistolen đã chỉ ra trước đây, một lợi ích khác là nó sẽ tải xuống song song với các tài sản khác của trang web của bạn. Bạn có thể muốn thêm nó vào câu trả lời tuyệt vời này.
nathangiesbrecht

Đó là một chút sai lầm. Trình duyệt tải xuống tài sản song song bất kể chúng được lưu trữ ở đâu, nhưng có giới hạn số lượng thứ chúng sẽ tải xuống từ cùng một máy chủ cùng một lúc.
Đài phun nước Tim

Tôi đã bỏ qua điều đó một cách trung thực, nó không phải ở đây cũng không ở đó - tệp có thể được tải xuống song song nhưng nó cũng là một tra cứu DNS bổ sung. Thêm vào đó, bất kể sự khác biệt về thời gian của một trong hai điều đó là không đáng kể.
DisgruntledGoat

Đủ công bằng. Nhưng trên các kết nối nhanh, nó có thể không dẫn đến tổng thời gian tải nhanh hơn không, vì có thể sử dụng nhiều "đường ống" hơn?
nathangiesbrecht

11

Một nhược điểm khác:

Sử dụng CDN cho phép người vận hành CDN theo dõi khách truy cập trang web. Đó là lý do tại sao họ không tốn tiền.


Theo dõi chắc chắn, nhưng không phải khách truy cập: cả CDN của jquery và CDN của jquery đều được lưu trữ trên các tên miền không đặt hoặc sử dụng cookie (đây có thể cũng là một tối ưu hóa hiệu suất) và không có thông tin thực sự có thể nhận dạng được trong yêu cầu. Nhà cung cấp CDN có thể có ý tưởng về địa chỉ IP và một số thống kê về chuỗi và tham chiếu của tác nhân người dùng. Điều này có thể có giá trị, nhưng bản thân nó không phải là một rủi ro lớn về quyền riêng tư (nếu những hồ sơ này tương quan với cơ sở dữ liệu khác - giả sử quảng cáo được cá nhân hóa phục vụ tại thời điểm tương tự - thì có lẽ đó có thể là một phương tiện theo dõi).
Eamon Nerbonne

Tôi nghĩ rằng có thể được chấp nhận (trong trường hợp của google), rằng dữ liệu có tương quan với các cơ sở dữ liệu khác, vì hầu như mọi người đều sử dụng google để tìm kiếm mọi lúc. Điều tương tự với phông chữ google: Gần đây tôi đã cố gắng tự lưu trữ các phông chữ trên máy chủ, nhưng phát hiện ra rằng rất khó để làm điều đó. Google không cấm nó (Nguồn mở), nhưng họ không cung cấp cho bạn các tệp theo kiểu sẵn sàng sử dụng: Bạn có thể tự biên dịch chúng (nhưng không có tệp thực hiện) hoặc bạn có thể giả mạo các yêu cầu cho máy chủ được sử dụng để cung cấp chúng bình thường. Cả hai đều không thể làm được cho một người không chuyên.
Jost

Có lẽ. Tôi không có bất kỳ thông tin nội bộ nào, vì vậy thật khó để nói chắc chắn. Tôi chắc chắn rằng nó sẽ có lỗi và có những khoảng trống đáng kể, tuy nhiên: Hầu hết những nơi tôi sử dụng internet đều bị NAT và một số người dùng có khá nhiều người dùng với các máy tương tự (có thể là các chuỗi UA giống hệt nhau) - không thể biết được yêu cầu đến từ ai. Và tất nhiên những gì với nút chia sẻ adsense và xã hội, chúng có thể có một phương tiện đáng tin cậy hơn hầu như luôn luôn, vì vậy tôi có thể tưởng tượng chúng không làm phiền. Đối với các phông chữ - Tôi đã tải xuống vài lần, vì vậy tôi hoàn toàn không hiểu ý của bạn là gì?
Eamon Nerbonne

Để rõ ràng: Tôi giả định rằng phần lớn các lượt truy cập trang web bạn thực hiện có thể và sẽ được theo dõi bởi các nhà sưu tập thống kê lớn nhờ các nút chia sẻ xã hội (khá phổ biến) và quảng cáo, xuất hiện ở khắp mọi nơi. Vì vậy, tôi chỉ tự hỏi rằng thông tin có thể gây hiểu lầm có thể có giá trị như thế nào từ các yêu cầu js được lưu trong bộ nhớ cache rất lớn - Tôi cá cược, không phải vậy, vì vậy tôi cho rằng họ không bận tâm đến việc xác định cá nhân mọi người bằng cách sử dụng JS do CDN cung cấp.
Eamon Nerbonne

Nó không được lưu trong bộ nhớ cache như mọi người nghĩ - Khi nhúng phông chữ bằng cách google thích nó bằng cách chèn một liên kết CSS vào phông chữ.googleapis.com, mỗi lượt xem trang sẽ mở ra một kết nối tới google (bạn có thể thấy chúng trong Fireorms). Không quan trọng nếu lưu trữ hay không. Về phần tải xuống: Bạn có thể chỉ cho tôi một nơi mà tôi có thể tải xuống các phông chữ ở định dạng eot, woff, ttf và svg chất lượng cao (cùng phiên bản google cung cấp, không có bộ chuyển đổi bên ngoài) không?
Jost

3

Sử dụng (các) CDN để loại bỏ sự phụ thuộc của bạn trên nhiều máy chủ như thế này về bản chất thể hiện sự đánh đổi giữa băng thông và độ trễ, giả sử bạn chỉ quan tâm đến hiệu suất.

Tôi tình cờ cho rằng giải pháp thay thế không chỉ đơn giản là lưu trữ cục bộ, mà kết hợp nó với một yêu cầu địa phương khác - thường không có lý do chính đáng nào để không kết nối khi bạn có thể.

Nếu băng thông là vô hạn, thì tốt nhất bạn KHÔNG nên tránh, vì bạn sẽ chậm như dịch vụ chậm nhất của mình - vì độ trễ không thể dự đoán hoàn hảo, với đủ dịch vụ, ngay cả khi chúng nhanh, bạn chỉ cần một chút không may mắn gây ra tải trang chậm.

Nếu độ trễ bằng 0, thì việc truyền tải của bạn qua nhiều máy chủ có thể cải thiện băng thông bằng cách sử dụng nhiều máy chủ (không hữu ích vì có thể giới hạn băng thông ở gần máy khách, không phải máy chủ), nhưng quan trọng hơn, nó có thể giảm lượng dữ liệu được truyền một chút bằng cách tăng hiệu quả của bộ nhớ đệm.

Nó phụ thuộc vào kịch bản của bạn, nhưng tôi thường mong đợi độ trễ sẽ là vấn đề nhiều hơn băng thông, trừ khi các tập lệnh của bạn cực kỳ lớn (điều mà jquery không phải là). Tại thời điểm đó, thường là nhanh hơn để lưu trữ jquery như là một phần của tệp cục bộ được nối.

Các lý do không lưu trữ cục bộ là ví dụ: khi bạn trả tiền cho băng thông hoặc bạn đang lưu trữ trên một số máy chủ chậm (kết nối của bạn với máy khách bị tắc nghẽn ở phía bạn chứ không phải của khách hàng) hoặc bạn biết rằng khách hàng của bạn sẽ có băng thông thực sự thấp (dsl hoặc modem cấp thấp, giả sử - điện thoại di động có xu hướng có nhiều vấn đề về độ trễ hơn so với vấn đề băng thông) hoặc khách hàng của bạn trả tiền cho băng thông (ví dụ như điện thoại di động) và các tập lệnh là một phần đáng chú ý trong đó bộ nhớ đệm nhỏ sẽ chiến thắng (không có khả năng ).

Trong mọi trường hợp: có liên quan hơn nhiều sẽ là liệu bạn đã bao quát những điều cơ bản trước chưa; các tiêu đề bộ nhớ đệm thích hợp, nối, thu nhỏ và gzipping (tốt nhất là với tỷ lệ nén cao). Và đây là mấu chốt: nếu bạn KHÔNG làm điều đó, thì ít nhất CDN sẽ làm được, vì vậy, đó là chiến thắng ...

TL; DR: Nếu bạn đã ghép nối + thu nhỏ + gzipping + lưu vào bộ nhớ cache, thì việc phục vụ các tập lệnh nhỏ cục bộ nhanh hơn từ CDN mặc dù hiệu suất tốt hơn của CDN - nhưng chỉ khi bạn đã hoàn thành bài tập về nhà, có thể không ở trang đầu tiên tải, và chắc chắn có ngoại lệ cho quy tắc này.


Ngẫu nhiên, có một số dao cạo byte giành được bằng cách chỉ sử dụng một yêu cầu: chỉ riêng các tiêu đề lên tới gần 1kb, với trọng tải 28k không có gì. gzip hoạt động tốt hơn với nhiều ngữ cảnh hơn, giúp tiết kiệm thêm 0,5k. Các tổng phí TCP, DNS, HTTPS đều có thể dễ dàng thêm KB ở đây hoặc ở đó, và tệ hơn nữa là RTT. Đó là lý do tại sao đối với các tệp nhỏ như thế này, CDN không nhanh như bạn nghĩ.
Eamon Nerbonne

1

Sử dụng thư viện lưu trữ jQuery của Google cho phép trang của bạn được tải nhanh hơn. Thật vậy, thư viện được tải cùng lúc với trang của bạn thay vì sau đó.


Nhưng làm thế nào để nó ảnh hưởng đến tải trang?
Leo

1
Các thư viện cục bộ cũng được tải trong khi trang được tải - Trong cả hai trường hợp, quá trình tải xuống tài sản bắt đầu khi trình duyệt (hiện đại) nhìn thấy đoạn mã kích hoạt tải xuống, điều này thường xảy ra trước khi toàn bộ tài liệu được tải xuống. Xem ảnh chụp màn hình Firebird này để biết ví dụ
Jost
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.