Bạn bao gồm thư viện jQuery từ đâu? Google JSAPI? CDN?


242

Có một vài cách để bao gồm jQuery và jQuery UI và tôi tự hỏi mọi người đang sử dụng cái gì?

  • Google JSAPI
  • Trang web của jQuery
  • trang web / máy chủ của riêng bạn
  • CDN khác

Gần đây tôi đã sử dụng Google JSAPI, nhưng nhận thấy rằng phải mất một thời gian dài để thiết lập kết nối SSL hoặc thậm chí chỉ để giải quyết google.com. Tôi đã sử dụng như sau cho Google:

<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.1');
</script>

Tôi thích ý tưởng sử dụng Google để nó được lưu trong bộ nhớ cache khi truy cập các trang web khác và để tiết kiệm băng thông từ máy chủ của chúng tôi, nhưng nếu nó vẫn là phần chậm của trang web, tôi có thể thay đổi bao gồm.

Bạn dùng gì? Bạn đã có bất kỳ vấn đề?

Chỉnh sửa: Chỉ cần truy cập trang web của jQuery và họ sử dụng phương pháp sau:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

Edit2: Đây là cách tôi đã bao gồm jQuery mà không gặp sự cố nào trong năm ngoái:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

Sự khác biệt là loại bỏ http:. Bằng cách xóa cái này, bạn không cần lo lắng về việc chuyển đổi giữa http và https.


8
Darryl, chỉnh sửa tuyệt vời. Tôi có thể đề nghị bạn di chuyển bản chỉnh sửa của bạn lên đầu trang và thay đổi srccú pháp đơn giản hơn / an toàn hơn / nhanh hơn mà bạn sử dụng bây giờ không? Câu trả lời của bạn về cơ bản đã trở thành kinh điển và cả hai thay đổi sẽ giúp mọi người có được những gì họ đến một cách nhanh chóng.
Josh Smith

Câu trả lời:


153

Không nghi ngờ gì, tôi chọn để JQuery phục vụ bởi các máy chủ Google API. Tôi đã không sử dụng phương pháp jsapi vì tôi không tận dụng bất kỳ API Google nào khác, tuy nhiên nếu điều đó thay đổi thì tôi sẽ xem xét nó ...

Thứ nhất: Các máy chủ api của Google được phân phối trên toàn thế giới thay vì vị trí máy chủ duy nhất của tôi: Máy chủ gần hơn thường có nghĩa là thời gian phản hồi nhanh hơn cho khách truy cập.

Thứ hai: Nhiều người chọn để lưu trữ JQuery trên Google, vì vậy khi khách truy cập đến trang web của tôi, họ có thể đã có tập lệnh JQuery trong bộ đệm cục bộ của họ. Nội dung được lưu trữ trước thường có nghĩa là thời gian tải nhanh hơn cho khách truy cập.

Thứ ba: Công ty lưu trữ web của tôi tính phí cho băng thông được sử dụng. Không có ý nghĩa tiêu thụ 18k mỗi phiên người dùng nếu khách truy cập có thể nhận được cùng một tệp ở nơi khác.

Tôi hiểu rằng tôi đặt một phần niềm tin vào Google để phân phát tệp tập lệnh chính xác và trực tuyến và có sẵn. Cho đến thời điểm này, tôi đã không thất vọng khi sử dụng Google và sẽ tiếp tục cấu hình này cho đến khi nó không có ý nghĩa.

Một điều đáng để chỉ ra ... Nếu bạn có một hỗn hợp các trang an toàn và không an toàn trên trang web của mình, bạn có thể muốn thay đổi động nguồn Google để tránh cảnh báo thông thường bạn thấy khi tải nội dung không an toàn trong trang bảo mật:

Đây là những gì tôi nghĩ ra:

<script type="text/javascript">
    document.write([
        "\<script src='",
        ("https:" == document.location.protocol) ? "https://" : "http://",
        "ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>" 
    ].join(''));
</script>

CẬP NHẬT 9/8/2010 - Một số đề xuất đã được thực hiện để giảm độ phức tạp của mã bằng cách xóa HTTP và HTTPS và chỉ cần sử dụng cú pháp sau:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

Ngoài ra, bạn cũng có thể thay đổi url để phản ánh số chính của jQuery nếu bạn muốn đảm bảo rằng phiên bản Chính mới nhất của các thư viện jQuery đã được tải:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

Cuối cùng, nếu bạn không muốn sử dụng Google và thích jQuery, bạn có thể sử dụng đường dẫn nguồn sau (lưu ý rằng jQuery không hỗ trợ các kết nối SSL):

<script type="text/javascript">
    document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>

26
Tôi đồng ý với cả ba lý do của bạn, đó là lý do tại sao tôi đưa jquery từ Google vào các trang web sản xuất của mình. Thay vì tiêm động js cho các trang SSL, tôi chỉ tham chiếu url trong thẻ script mà không có giao thức được chỉ định. Có vẻ làm việc tốt cho tôi. <script src = "// ajax.google ..."> </ script>
Aaron Wagner

1
Ý tưởng thú vị ... Nhưng nếu bạn định sử dụng ngộ độc DNS để chiếm quyền điều khiển tải JQuery, tại sao không chỉ chiếm quyền điều khiển toàn bộ trang web? Hay làm thế nào về tập lệnh Google Analytics?
Dscoduc

9
Tôi cũng đồng ý với mọi thứ, ngoại trừ để đơn giản hóa mọi thứ, tôi sử dụng định dạng này: <script src = "// ajax.google ..."> </ script>. Sau đó, tôi không cần phải lo lắng về http hoặc https. Thxs Aaron Wagner cho điều đó.
Darryl Hein

11
Tôi không thấy những gì document.write()đang được sử dụng? một đơn giản <script src="..."></script>là tốt để đặt trong tiêu đề. → @ Dscoduc: ← nó sẽ không nhanh hơn, nó sẽ mang thông điệp cảnh báo đó đi. Nếu trang web của bạn đang sử dụng https an toàn và bạn đang lấy từ một nội dung không được mã hóa (ví dụ http://googleapis) thì bạn sẽ nhận được thông báo cảnh báo đó. Sẽ nhanh hơn một chút nếu bạn chỉ sử dụng http nhưng bạn đang liên kết đến https://googleapis, có một chút chi phí với mã hóa "an toàn". Do đó, liên kết đến http://googleapissẽ nhanh hơn một chút.
vol7ron

5
Ngoài ra, hãy nhớ rằng Google sau đó sẽ sử dụng điều này để theo dõi các trang web mà người dùng truy cập. Vì vậy, nếu bạn đang làm một trang web cần có ý thức về quyền riêng tư, thì việc lưu trữ một vài tệp nhỏ là một cái giá nhỏ để trả cho quyền riêng tư.
Hans-Christoph Steiner

19

Một lý do bạn có thể muốn lưu trữ trên một máy chủ bên ngoài là để khắc phục các giới hạn của trình duyệt về các kết nối đồng thời đến máy chủ cụ thể.

Tuy nhiên, do tệp jQuery bạn đang sử dụng có thể sẽ không thay đổi thường xuyên, bộ đệm của trình duyệt sẽ khởi động và làm cho điểm đó phải di chuyển phần lớn.

Lý do thứ hai để lưu trữ nó trên máy chủ bên ngoài là để giảm lưu lượng đến máy chủ của riêng bạn.

Tuy nhiên, với kích thước của jQuery, rất có thể nó sẽ là một phần nhỏ trong lưu lượng truy cập của bạn. Bạn có lẽ nên cố gắng tối ưu hóa nội dung thực tế của bạn.


1
một lý do khác là người dùng đã có jquery từ google trong bộ nhớ cache của họ, vì vậy họ thậm chí có thể không cần tải xuống lần đầu tiên khi họ truy cập trang web của bạn.
Kip

14

jQuery 1.3.1 phút chỉ có kích thước 18k. Tôi không nghĩ đó là quá nhiều để yêu cầu tải trang ban đầu. Nó sẽ được lưu trữ sau đó. Kết quả là, tôi tự lưu trữ nó.


7
Tôi tôn trọng không đồng ý, dựa trên lý do đã nêu của bạn. Nếu bạn nhận được nhiều lưu lượng truy cập thì 18k mỗi phiên có thể nhanh chóng tăng thêm một lượng lưu lượng lớn. Đặc biệt nếu lưu trữ web của bạn tính phí theo băng thông được sử dụng ...
Dscoduc

1
Quan điểm của tôi là điều đó chỉ đáng quan tâm nếu khách truy cập của bạn chỉ nhìn vào một trang. Nếu hồ sơ của bạn có ít khách truy cập & nhiều lượt xem trang, thì chi phí tối thiểu khi trải đều trên lượt xem trang trên mỗi khách truy cập. Ditto cho du khách quay trở lại.
Kristen

2
trừ khi trang web của bạn hoàn toàn nhỏ bé, 18k sẽ luôn là một phần nhỏ trong lưu lượng truy cập của bạn.
Hans-Christoph Steiner

14

Nếu bạn muốn sử dụng Google, liên kết trực tiếp có thể phản hồi nhanh hơn. Mỗi thư viện có đường dẫn được liệt kê cho tệp trực tiếp. Đây là đường dẫn jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

Chỉ cần đọc lại câu hỏi của bạn, có lý do gì bạn đang sử dụng https không? Đây là thẻ script Google liệt kê trong ví dụ của họ

<script src="http://www.google.com/jsapi"></script>

3
Sử dụng HTTPS vì trang web là HTTPS, vì vậy phải có.
Darryl Hein

1
Tất cả nội dung của bạn là dựa trên https, hoặc chỉ một số nội dung?
Dscoduc

2
Liên kết http trên các trang web https gây phiền nhiễu vì IE (ít nhất là theo mặc định) khiến bạn khó chịu "Trang web này chứa hỗn hợp nội dung an toàn và không an toàn." hộp xác nhận.
cletus

1
Trang web có mã đến từ SSL hoàn toàn - thông tin liên hệ cực kỳ an toàn.
Darryl Hein

1
Nếu bạn quan tâm đến bảo mật của người dùng, hãy luôn sử dụng HTTPS cho javascript. Không có HTTPS, khá dễ dàng để xử lý các yêu cầu và phục vụ khai thác cùng với javascript mà bạn định gửi cho mọi người. Hãy nghĩ rằng wifi công cộng, các bộ định tuyến gia đình bị hack, vv là các vị trí MITM có thể. Nhìn vào tất cả các cuộc thi pwn-to-own: họ luôn khai thác trình duyệt để tham gia.
Hans-Christoph Steiner

8

Tôi sẽ không muốn bất kỳ trang web công cộng nào mà tôi phát triển phụ thuộc vào bất kỳ trang web bên ngoài nào và do đó, tôi sẽ tự lưu trữ jQuery.

Bạn có sẵn sàng ngừng hoạt động trên trang web của mình khi trang khác (Google, jquery.com, v.v.) không hoạt động không? Phụ thuộc ít hơn là chìa khóa.


2
Tôi đặt trải nghiệm người dùng (thời gian tải nhanh) ngay trên đó với ít phụ thuộc hơn.
Dscoduc

1
@slacy hey trang web của bạn bị sập! thực sự là jk, nhưng tôi đã nhận thấy rằng bạn đang sử dụng Google Analytics và có tập lệnh của họ ngay từ đầu thay vì kết thúc - điều này sẽ làm chậm trang web của bạn xuống một chút nếu google IS chậm
Simon_Weaver

3
hmm ... slacy đang sử dụng Google Analytics? Không phải anh ta chỉ nói rằng anh ta sẽ không muốn bất kỳ trang web công khai nào mà anh ta phát triển phụ thuộc vào một trang web bên ngoài sao? ;-)
Dscoduc

1
Wow, dudes, một số bình luận khắc nghiệt ở đó. :) Vâng, tôi sử dụng Analytics trên blog cá nhân của mình, nhưng đó không phải là trang web sản xuất tạo ra doanh thu, vì vậy tôi nghĩ rằng nó thực sự tốt. Tôi chắc chắn rằng trang web của tôi đã ngừng hoạt động nhiều ngày trong năm. Hãy nhớ rằng, những gì bạn làm cho các trang web cá nhân và cho công việc không giống nhau
slacy 17/2/2016

6
Có nhiều lý do tốt khác để sử dụng bản sao địa phương: Google thường xuyên bị chặn ở nhiều quốc gia như Iran, Trung Quốc, v.v. Điều đó có nghĩa là hơn một tỷ người sẽ không có quyền truy cập.
Hans-Christoph Steiner

6

Ưu điểm: Máy chủ lưu trữ trên Google có lợi ích

  • Có lẽ nhanh hơn (máy chủ của họ được tối ưu hóa hơn)
  • Họ xử lý bộ nhớ đệm chính xác - 1 năm (chúng tôi đấu tranh để được phép thực hiện các thay đổi để có được các tiêu đề ngay trên máy chủ của chúng tôi)
  • Người dùng đã có liên kết đến phiên bản do Google lưu trữ trên một tên miền khác đã có tệp trong bộ nhớ cache của họ

Nhược điểm:

  • Một số trình duyệt có thể xem nó là tên miền chéo XSS và không cho phép tệp.
  • Đặc biệt người dùng đang chạy plugin NoScript cho Firefox

Tôi tự hỏi nếu bạn có thể BAO GỒM từ Google, sau đó kiểm tra sự hiện diện của một số biến toàn cầu hoặc somesuch và nếu không tải từ máy chủ của bạn?


3
Đó là khuyết điểm của Firefox, không phải của Google ,.)
Nakilon

6

Có một vài vấn đề ở đây. Thứ nhất, phương thức tải async mà bạn đã chỉ định:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load('jquery', '1.3.1');
  google.setOnLoadCallback(function() {
    // do stuff
  });
</script>

có một vài vấn đề Thẻ script tạm dừng tải trang trong khi chúng được truy xuất (nếu cần). Bây giờ nếu chúng tải chậm thì điều này là xấu nhưng jQuery thì nhỏ. Vấn đề thực sự với phương pháp trên là vì tải jquery.js xảy ra độc lập cho nhiều trang, nên chúng sẽ hoàn tất tải và kết xuất trước khi jquery tải, do đó, bất kỳ kiểu jquery nào bạn thực hiện sẽ là một thay đổi rõ ràng cho người dùng .

Một cách khác là:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

Hãy thử một số ví dụ đơn giản như, có một bảng đơn giản và thay đổi nền của các ô thành màu vàng với phương thức setOnLoadCallback () so với $ (tài liệu). Đã () với tải tĩnh jquery.min.js. Phương pháp thứ hai sẽ không có nhấp nháy đáng chú ý. Ý chí đầu tiên. Cá nhân tôi nghĩ rằng đó không phải là một trải nghiệm người dùng tốt.

Như một ví dụ chạy này:

<html>
<head>
  <title>Layout</title>
  <style type="text/css">
    .odd { background-color: yellow; }
  </style>
</head>
<body>
<table>
  <tr><th>One</th><th>Two</th></tr>
  <tr><td>Three</td><td>Four</td></tr>
  <tr><td>Five</td><td>Six</td></tr>
  <tr><td>Seven</td><td>Nine</td></tr>
  <tr><td>Nine</td><td>Ten</td></tr>
</table> 
<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.3.1");
  google.setOnLoadCallback(function() {
    $(function() {
      $("tr:odd").addClass("odd");
    });
  });
</script>
</body>
</html>

Bạn (nên) thấy bảng xuất hiện và sau đó các hàng chuyển sang màu vàng.

Vấn đề thứ hai với phương thức google.load () là nó chỉ lưu trữ một phạm vi tệp giới hạn. Đây là một vấn đề đối với jquery vì nó phụ thuộc rất nhiều vào trình cắm thêm. Nếu bạn thử và bao gồm một plugin jquery với một <script src="...">thẻ và google.load()trình cắm có thể sẽ thất bại với các thông báo "jQuery không được xác định" vì nó chưa được tải. Tôi không thực sự thấy một cách xung quanh này.

Vấn đề thứ ba (với một trong hai phương pháp) là chúng là một tải bên ngoài. Giả sử bạn có một số plugin và mã Javascript của riêng bạn, bạn có tối thiểu hai yêu cầu bên ngoài để tải Javascript của mình. Có lẽ bạn nên lấy jquery, tất cả các plugin có liên quan và mã của riêng bạn và đặt nó vào một tệp được rút gọn.

Từ API Ajax Libraries bạn nên sử dụng của Google cho Hosting? :

Để tải thời gian, bạn thực sự đang tải hai tập lệnh - tập lệnh jsapi và tập lệnh mootools (phiên bản nén từ phía trên). Vì vậy, đó là hai kết nối, chứ không phải một. Theo kinh nghiệm của tôi, tôi thấy rằng thời gian tải thực sự chậm hơn 2-3 lần so với tải từ máy chủ chia sẻ cá nhân của riêng tôi, mặc dù nó đến từ Google và phiên bản tệp nén của tôi lớn hơn một vài lần so với Google. Điều này, ngay cả sau khi tệp đã được tải và (có lẽ) được lưu trữ. Vì vậy, đối với tôi, vì băng thông không quan trọng lắm, sẽ không thành vấn đề.

Cuối cùng, bạn có vấn đề tiềm ẩn của một trình duyệt hoang tưởng gắn cờ yêu cầu như một số nỗ lực XSS. Đây thường không phải là sự cố với cài đặt mặc định nhưng trên các mạng công ty nơi người dùng có thể không kiểm soát được trình duyệt nào họ sử dụng chứ đừng nói đến cài đặt bảo mật mà bạn có thể gặp sự cố.

Vì vậy, cuối cùng tôi thực sự không thể thấy tôi sử dụng Google AJAX API cho jQuery ít nhất (các API "hoàn chỉnh" hơn là một câu chuyện khác nhau theo một số cách) ngoại trừ việc đăng các ví dụ ở đây.


Tôi chưa có kinh nghiệm về bất kỳ vấn đề nào bạn đề cập. Chỉ cần tải mọi thứ theo đúng thứ tự sẽ giải quyết khá nhiều thứ theo như tôi hiểu.
Darryl Hein

4

Ngoài những người khuyên nên lưu trữ nó trên máy chủ của riêng mình, tôi đã đề xuất giữ nó trên một tên miền riêng (ví dụ: static.website.com) để cho phép các trình duyệt tải nó tách biệt với luồng nội dung khác. Mẹo này cũng hoạt động cho tất cả các công cụ tĩnh, nói hình ảnh và css.


4

Tôi phải bỏ phiếu -1 cho các thư viện được lưu trữ trên Google. Họ đang thu thập dữ liệu, phong cách phân tích của google, với các trình bao bọc của họ xung quanh các thư viện này. Tối thiểu, tôi không muốn một trình duyệt máy khách làm nhiều hơn tôi yêu cầu nó làm, ít hơn bất cứ thứ gì khác trên trang. Tệ hơn nữa, đây là "phiên bản mới" của Google về việc không xấu xa - sử dụng javascript không phô trương để thu thập thêm dữ liệu sử dụng.

Lưu ý: nếu họ đã thay đổi cách làm này, siêu. Nhưng lần cuối cùng tôi xem xét sử dụng các thư viện được lưu trữ của họ, tôi đã theo dõi lưu lượng truy cập http bên ngoài trên trang web của mình và các cuộc gọi định kỳ đến các máy chủ google không phải là điều tôi mong đợi.


Nhưng bạn đã chạy Google Analytics trên trang web của mình chưa? Vì tôi không cho rằng nó có nhiều khác biệt cho dù JQuery có đến từ Google hay không, nên có lẽ họ đã biết tôi đang chạy nó trên trang web của mình ...
Dscoduc

Nhưng nó được lưu trong 1 năm - chúng tôi thậm chí có gửi 304 "Tệp đã thay đổi" cho Google không?
Kristen

Vâng, tôi cũng đã thấy những cuộc gọi định kỳ đó trở lại Google (Trình quản lý hoạt động của Safari có một danh sách hay).
Darryl Hein

Dscoduc - vâng, sử dụng Analytics. Ít nhất với việc thực hiện đó, tôi đã hiểu trước rằng tôi đang từ bỏ dữ liệu sử dụng. Không phải như vậy với các lib lib.
sáu

3

Tôi có thể là trường học cũ về điều này, nhưng tôi vẫn cau mày với liên kết nóng. Có thể Google là ngoại lệ, nhưng nói chung, thực sự chỉ là cách cư xử tốt để lưu trữ các tệp trên máy chủ của riêng bạn.


3
Bạn có ý nghĩa gì bởi "cách cư xử tốt?" Google khuyến khích bạn liên kết với máy chủ của họ. Nó được bơm ra bởi cơ sở hạ tầng đáng kinh ngạc của Google.
Nosredna

2
chắc chắn có một sự nhầm lẫn lúc đầu khi bạn nghe về việc sử dụng google. nhưng như nosredna nói rằng điều đó được khuyến khích "Chúng tôi giảm bớt việc lưu trữ các thư viện, thiết lập chính xác các tiêu đề bộ đệm, cập nhật các bản sửa lỗi gần đây nhất, v.v." - code.google.com/apis/ajaxlibs
Simon_Weaver

3

Tôi sẽ thêm điều này như một lý do để lưu trữ cục bộ các tệp này.

Gần đây, một nút ở Nam California trên TWC đã không thể giải quyết tên miền ajax.googleapis.com (chỉ dành cho người dùng có IPv4) vì vậy chúng tôi không nhận được các tệp bên ngoài. Điều này đã bị gián đoạn cho đến ngày hôm qua (bây giờ nó vẫn còn tồn tại.) Bởi vì nó không liên tục, tôi đã gặp vô số vấn đề khi khắc phục sự cố người dùng SaaS. Đã dành vô số thời gian để cố gắng theo dõi lý do tại sao một số người dùng không gặp vấn đề gì với phần mềm và những người khác thì gặp khó khăn. Trong quy trình gỡ lỗi thông thường của tôi, tôi không có thói quen hỏi người dùng nếu họ tắt IPv6.

Tôi vấp phải vấn đề này vì bản thân tôi đang sử dụng "tuyến đường" đặc biệt này đến tập tin và cũng chỉ sử dụng IPV4. Tôi đã phát hiện ra vấn đề với các công cụ dành cho nhà phát triển nói với tôi rằng jquery không tải, sau đó bắt đầu thực hiện theo dõi, v.v ... để tìm ra vấn đề thực sự.

Sau này, rất có thể tôi sẽ không bao giờ quay lại các tệp được lưu trữ bên ngoài bởi vì: google không phải gặp sự cố này và ... bất kỳ một trong các nút này đều có thể bị xâm phạm với việc chiếm quyền điều khiển DNS và cung cấp js độc hại thay vì các tập tin thực tế. Luôn nghĩ rằng tôi an toàn khi một tên miền google sẽ không bao giờ ngừng hoạt động, bây giờ tôi biết bất kỳ nút nào ở giữa người dùng và máy chủ có thể là một điểm thất bại.


2

Tôi chỉ bao gồm phiên bản mới nhất từ ​​trang jQuery: http://code.jquery.com/jquery-latest.pack.js Nó phù hợp với nhu cầu của tôi và tôi không bao giờ phải lo lắng về việc cập nhật.

EDIT: Đối với một ứng dụng web lớn, chắc chắn kiểm soát nó; tải về và phục vụ nó cho mình. Nhưng đối với trang cá nhân của tôi, tôi không thể không quan tâm. Mọi thứ không biến mất một cách kỳ diệu, chúng thường bị phản đối trước tiên. Tôi theo kịp nó đủ để biết những gì cần thay đổi cho các bản phát hành trong tương lai.


1
Tôi đã tìm thấy phương pháp đó khá nguy hiểm, nếu một thay đổi mã trong thư viện phá vỡ trang web của bạn thì sao? hoặc các trang web jquery đi xuống? Tôi muốn kiểm soát hoàn toàn tập tin.
Jason Miesionczek

1
Ngoài ra, tôi ghét phải đạt băng thông của người dùng jQuery như thế này. Họ đã cung cấp một công cụ miễn phí thực sự tuyệt vời và tôi ghét họ phải xuống vì chi phí băng thông. Tốt hơn là sử dụng Google làm nguồn bên ngoài của bạn nếu bạn không muốn tự lưu trữ nó, vì họ đang cung cấp nó cho mục đích đó.
nezroy

Tôi sẽ khuyên bạn nên chuyển sang sử dụng Google thay vì JQuery. Lý do chính là Google có thể sẽ có nhiều máy chủ trên khắp thế giới hơn JQuery và từ kinh nghiệm của tôi, nhiều người sử dụng dịch vụ lưu trữ của Google sẽ làm tăng khả năng bạn đã lưu nó vào bộ nhớ cache.
Dscoduc

Tôi đồng ý với Jason, tự động chuyển sang phiên bản mới hơn rất nguy hiểm. Có lẽ không nhiều bằng nếu bạn chỉ sử dụng jquery, nhưng với các plugin tôi chắc chắn không khuyến khích sử dụng nó. Tôi cho một người sử dụng một plugin trên một trang web hoạt động với 1.2.6 nhưng không phải 1.3.x (chưa ...)
jeroen

2

Ở đây một số tài nguyên hữu ích, hy vọng có thể giúp bạn chọn CDN. MS gần đây đã thêm một tên miền mới để phân phối Thư viện máng CDN của họ.

Định dạng cũ: http://ajax.microsoft.com/ajax/jQuery/jquery-1.5.1.js Định dạng mới: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js

Điều này không nên gửi tất cả các cookie cho microsoft.com. http: //www.asp.net/ajaxl Library / cdn.ashx#Using_jQuery_from_the_CDN_11

Dưới đây là một số thống kê về hầu hết các công nghệ phổ biến được sử dụng trên web trên tất cả các công nghệ. http://trends.builtwith.com/

Hy vọng có thể giúp bạn lựa chọn.


1

Nếu tôi chịu trách nhiệm cho trang web 'trực tiếp', tôi nhận thức rõ hơn về mọi thứ đang diễn ra và vào trang web của mình. Vì lý do đó, tôi tự lưu trữ phiên bản jquery-min trên cùng một máy chủ hoặc máy chủ tĩnh / bên ngoài nhưng theo cách mà một vị trí chỉ tôi (hoặc chương trình / proxy) của tôi có thể cập nhật thư viện sau khi đã xác minh / kiểm tra mọi thay đổi


Tôi hy vọng rằng Google sẽ không bao giờ thay đổi tệp - đối với các bản sửa lỗi, họ sẽ lưu trữ một tệp mới, với số phiên bản khác nhau trong tên tệp. Hay tôi ngây thơ? họ sẽ triển khai "Sửa lỗi nhỏ" bằng cách sử dụng cùng tên tệp ??
Kristen

Google không bao giờ nên thay đổi tệp nếu bạn yêu cầu một phiên bản cụ thể.
Darryl Hein

1

Trong đầu:

  (function() {
    var jsapi = document.createElement('script'); jsapi.type = 'text/javascript'; jsapi.async = true;
    jsapi.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.google.com/jsapi?key=YOUR KEY';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('head')[0]).appendChild(jsapi);
  })();

Cuối cơ thể:

<script type="text/javascript">
google.load("jquery", "version");
</script>

0

Tôi lưu trữ nó với các tệp js khác trên máy chủ của riêng tôi và đó là điểm đó, kết hợp và thu nhỏ chúng (với django-nén, ở đây, nhưng đó không phải là điểm) để được phục vụ như một tệp js, với mọi thứ trên trang web nhu cầu đặt vào nó. Dù sao bạn cũng sẽ cần phục vụ các tệp js của riêng mình, vì vậy tôi thấy không có lý do gì để không thêm các byte jquery bổ sung ở đó - một số kbs rẻ hơn để chuyển, hơn nhiều yêu cầu được thực hiện. Bạn không phụ thuộc vào bất cứ ai và ngay khi js rút gọn của bạn được lưu vào bộ nhớ cache, bạn cũng sẽ rất nhanh.

Trong lần tải đầu tiên, một giải pháp dựa trên CDN có thể giành chiến thắng, bởi vì bạn phải tải thêm kilobyte jquery từ máy chủ của riêng bạn (nhưng, không có yêu cầu bổ sung). Tôi nghi ngờ sự khác biệt là đáng chú ý, mặc dù. Và sau đó, trong lần tải đầu tiên với bộ nhớ cache đã xóa, giải pháp lưu trữ của riêng bạn có thể sẽ luôn nhanh hơn nhiều, vì cần nhiều yêu cầu hơn (và tra cứu DNS), để lấy jquery CDN.

Tôi tự hỏi làm thế nào điểm này gần như không bao giờ được đề cập, và CDN dường như chiếm lĩnh thế giới như thế nào :)

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.