Ưu và nhược điểm của tập lệnh được lưu trữ [đã đóng]


12

Tôi đã thấy một số nhà phát triển sử dụng các tập lệnh được lưu trữ để liên kết các thư viện của họ.

cdn.jquerytools.org là một ví dụ

Tôi cũng đã thấy mọi người phàn nàn rằng một liên kết kịch bản được lưu trữ đã bị xâm nhập.

Làm thế nào an toàn là sử dụng các tập lệnh lưu trữ trong thực tế? Các kịch bản được tự động cập nhật? Ví dụ: nếu jQuery 5 chuyển sang 6, tôi có tự động nhận phiên bản 6 hay tôi cần cập nhật liên kết của mình?

Tôi cũng thấy rằng Google có một bộ lớn các thiết lập tập lệnh này để lưu trữ.

Những ưu và khuyết điểm là gì?

Câu trả lời:


11

Ưu

  • Kịch bản của bạn được tải nhanh hơn . Nếu bạn có rất nhiều tài nguyên cần được tải từ một tên miền, trình duyệt của bạn thường sẽ tắc nghẽn điều này để bạn chỉ có một số yêu cầu song song cho cùng một máy chủ. Vì vậy, nếu bạn đang tải mười sáu tập lệnh riêng biệt, nhiều hình ảnh và nhiều tài liệu CSS thì sẽ có hàng đợi khi mỗi tài nguyên chờ đến lượt được tải. (Chắc chắn xem xét việc ghép các tệp CSS và Javascript của bạn - chỉ tải hai tài nguyên tập lệnh sẽ nhanh hơn đáng kể).
  • Tuy nhiên, nếu bạn tách các tài nguyên đó thành một tên miền riêng, trình duyệt của bạn sẽ không gặp vấn đề gì khi mở thêm các kết nối đến máy chủ đó, điều đó có nghĩa là nhiều tài nguyên được tải đồng thời dẫn đến việc thực thi trang nhanh hơn. Bạn cũng để một máy chủ khác xử lý một phần tải trang của mình, điều này tốt cho máy chủ của bạn có thể đang hoạt động trên một số yêu cầu thực thi tập lệnh như hiện tại.
  • Ngoài ra, các máy chủ CDN này (mạng phân phối nội dung) được định cấu hình để hoạt động như CDN. Chúng thường không nấu nướng (đối với kích thước gói nhỏ hơn) và được thiết lập với một máy chủ cực kỳ nhẹ, hoàn toàn liên quan đến việc phục vụ tài nguyên và lưu trữ các tài nguyên thường được sử dụng và không quá nhiều với việc nâng cấp hàng ngày như một tiêu chuẩn không có thật Máy chủ Apache sẽ thực hiện.
  • Sử dụng CDN như Google hay Akami cũng có những lợi ích khác - Google đặc biệt có máy chủ trên toàn thế giới và hệ thống định tuyến của nó đủ thông minh để ghép yêu cầu tài nguyên với bản sao địa lý gần nhất tồn tại. Máy chủ của bạn có thể đang cố gắng phục vụ jQuery.js cho Vladimir ở Nga - Google có thể có cùng tài nguyên từ Vladimir, giảm độ trễ.
  • Ngoài ra, vì rất nhiều trang web đã sử dụng các CDN này, nên có khả năng cao tài nguyên bạn đang phục vụ đã được người dùng lưu vào bộ nhớ cache. jQuery.js từ máy chủ của bạn và jQuery.js từ máy chủ của Google không được coi là cùng một tệp, cho dù chúng giống hệt nhau - nếu bạn tải từ Google, nó sẽ có thể sử dụng bản sao được lưu trong bộ nhớ cache từ trang web trước đó người dùng đã truy cập.
  • Bản thân các tệp sẽ không thay đổi, đặc biệt đối với các tài nguyên tập lệnh như khung Javascript. Nếu một phiên bản mới xuất hiện, Google sẽ tiếp tục lưu trữ phiên bản cũ (bất kể lỗi nghiêm trọng như thế nào) để CDN sẽ tiếp tục hoạt động bình thường và không phục vụ bất kỳ yêu cầu xấu nào. Đây là lý do tại sao bất kỳ tệp CDN nào đều có hậu tố đầy đủ với số phiên bản phù hợp.

Nhược điểm

  1. Có khả năng CDN của bạn không có sẵn. Cơ hội, tuy nhiên, mỏng hơn so với trang web của bạn đi xuống, có lẽ. Các CDN lớn hơn như Google và Akami có nhiều lớp chuyển đổi dự phòng.
  2. Tạo một kết nối mới có thể không có giá trị nếu bạn chỉ có một hoặc hai tài nguyên để tải từ máy chủ của riêng bạn.
  3. Bạn không có bất kỳ loại kiểm soát nào đối với tệp đang được cung cấp, do đó, sử dụng phiên bản jQuery tùy chỉnh của bạn hoặc bất kỳ thứ gì khác mà bạn đang cố tải đều bị loại trừ, trừ khi bạn đang trả tiền cho CDN của riêng bạn.

Bảo vệ

Tôi muốn giới thiệu bài đăng El Stack này cộng với một lượng tốt Google của chủ đề. Mỗi CDN sẽ khác nhau, mặc dù tóm lại tôi nghĩ rằng đây sẽ là một mối quan tâm nhỏ.


1

Một cái gì đó không ai đề cập đến là một tùy chọn theo dõi khác cho Google. Họ không cung cấp tất cả các dịch vụ này miễn phí mà không có lý do. AdSense và Analytics là khá đủ và ít nhất là những cái đó có thể được lọc. Đó là một kẻ lừa đảo lớn trong cuốn sách của tôi.


0

Ưu điểm:

  • Bạn không phải trả tiền cho băng thông liên quan đến việc phục vụ các tệp và nói chung

Nhược điểm:

  • Bạn phải tuân theo sự sẵn có của nhà cung cấp dịch vụ lưu trữ mà bạn đang sử dụng (nếu họ ngừng hoạt động vì bất kỳ lý do gì, bạn cũng sẽ thất bại).
  • Bạn buộc phải sử dụng bất kỳ phiên bản nào của tập lệnh mà nhà cung cấp dịch vụ lưu trữ có

Có những lợi ích khác của việc sử dụng CDN nhưng chúng không liên quan trực tiếp đến việc sử dụng dịch vụ lưu trữ tập lệnh thứ 3.


0

Theo như các cách thực hành tốt nhất, cách tiếp cận phổ biến để tối ưu hóa tải trang là gói tất cả các tài nguyên JS của bạn, do số lượng kết nối bị hạn chế đối với một tên miền như Jarrod đã đề cập và đặt tiêu đề hết hạn trong tương lai.

Những gì CDN mang lại cho một hỗn hợp như vậy, đặc biệt là những thứ phổ biến, như Jarrod cũng chỉ ra, là người dùng trước đó đã truy cập URL và có thể truy xuất tài nguyên JS ngay lập tức từ bộ đệm của khách hàng mà không cần phải thiết lập kết nối.

Để đạt được hiệu quả đó, nếu tất cả chúng ta đã sử dụng CDN và sử dụng các thực tiễn tốt nhất, chúng ta có thể cứu người dùng khỏi lấy thêm ~ 10-50KB khi họ truy cập URL ban đầu của chúng tôi và cho phép họ tải trang của họ nhanh hơn.

Tôi thực sự khuyên bạn nên sử dụng CDN vì hai lý do: nhược điểm mà Jarrod đã đề cập là có, đúng, nhưng hoàn toàn không đáng kể và nếu bạn đã gói các nguồn của mình vào một tài liệu duy nhất, bạn sẽ buộc mọi người truy xuất, giả sử, phần jQuery tĩnh của tài liệu (~ 33KB) mỗi khi bạn cập nhật một trong các tài nguyên đi kèm.

Tôi không biết âm thanh đó quan trọng với bạn như thế nào, nhưng với lượng người dùng khổng lồ, điều này dẫn đến việc cắt giảm băng thông đáng kể và tiết kiệm đáng kể, bot mà chúng ta có thể chuyển hướng sang các vấn đề cấp bách hơn, chẳng hạn như phát trực tuyến nội dung khiêu dâm và mua bia.


-2

Đừng làm điều đó

Cá nhân, tôi sẽ không dựa vào các tập lệnh lưu trữ của bên thứ ba. Nếu bạn tận dụng các kịch bản của người khác, bạn sẽ thương xót họ. Có một số điều cần xem xét:

  1. Nếu trang web của họ bị sập trang của bạn có thể hết thời gian hoặc lỗi.
  2. Nếu họ ngừng hoạt động và tắt lưu trữ, bạn sẽ mất tất cả chức năng đó
  3. Nếu họ bị hack, bạn cũng có thể bị hack.
  4. Kịch bản chéo trang có thể phát tàn phá với chứng chỉ SSL
  5. Thời gian tải trang có thể tăng đáng kể
  6. Nếu giao diện thay đổi, bạn cần sửa đổi tất cả các lệnh gọi hàm

An toàn hơn khi lưu trữ mã trên trang web của riêng bạn, hãy tin tôi. Bạn chỉ cần bị đốt cháy một lần và có 250 trang web mà bạn xây dựng và lưu trữ bắt đầu hoạt động hài hước vì bạn đã dựa vào phần thứ ba được lưu trữ tập lệnh ngừng hoạt động.


1
Tôi nghĩ rằng nếu bạn sử dụng một CDN lớn, đáng tin cậy, bạn có thể sẽ không phải đối mặt với nhiều mối quan tâm của mình. 1.) Tôi hy vọng rằng CDN của Google sẽ có thời gian hoạt động rất tốt, 2.) Tôi không thấy Google sẽ sớm ngừng hoạt động, 3.) Điều đó hợp lý, nhưng một lần nữa tôi mong đợi việc sửa / sửa lỗi rất nhanh, 4 .) Tôi chưa thấy bất kỳ vấn đề nào, 5.) Nếu đó là CDN đáng kính, tải trang thực sự sẽ nhanh hơn những gì bạn có thể tự phục vụ (giữa đường ống, bộ nhớ cache đa trang và miền không nấu ăn), 6.) Dành cho libs phiên bản cốt lõi như jQuery không nên có một vấn đề.
scunliffe

1
... Ngoài ra, không có gì ngăn cản bạn thực hiện các kịch bản dự phòng của riêng mình nếu các CDN từ xa không thành công.
scunliffe

Không có lý do nào trong số những lý do này mà Cape Cod Gunny liệt kê là mối quan tâm hợp lệ với các CDN hiện đại như Google hoặc nhiều nhà cung cấp CDN lớn khác ngoài kia.
Jarrod Nettles
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.