Microsoft CDN cho jQuery hoặc Google CDN? [đóng cửa]


187

Có thực sự vấn đề CDN nào bạn sử dụng để liên kết đến tệp jquery của bạn hoặc bất kỳ tệp javascript nào cho vấn đề đó không. Là một tiềm năng nhanh hơn so với người khác? Những yếu tố nào khác có thể đóng vai trò trong đó cdn bạn quyết định sử dụng? Tôi biết rằng Microsoft, Yahoo và Google đều đã có CDN.

Câu trả lời:


151

Cập nhật dựa trên ý kiến:

Phiên bản ngắn: Nó không quan trọng lắm, nhưng nó có thể phụ thuộc vào những gì họ lưu trữ. Tất cả đều lưu trữ những thứ khác nhau: Google không lưu trữ jQuery.Validate, Microsoft đã không lưu trữ jQuery-UI, kể từ năm 2016 họ làm !!, Microsoft cung cấp các tập lệnh của họ sẽ được phục vụ thông qua ScriptResource.axdvà tích hợp dễ dàng hơn (ví dụ: ScriptManager với ASP. Mạng 4.0 ).

Lưu ý quan trọng: Nếu bạn đang xây dựng một ứng dụng mạng nội bộ, hãy tránh xa phương pháp CDN. Nó không quan trọng của những người lưu trữ nó, trừ khi bạn đang ở trên một rất quá tải máy chủ nội bộ, không có CDN sẽ cung cấp cho bạn hiệu suất hơn 100MB local / 1GB ethernet sẽ. Nếu bạn sử dụng CDN cho một ứng dụng nội bộ nghiêm ngặt, bạn sẽ làm giảm hiệu suất . Đặt chính xác các tiêu đề hết hạn bộ nhớ cache của bạn và bỏ qua các CDN tồn tại trong kịch bản chỉ mạng nội bộ.

Cơ hội hoặc bị chặn dường như là bằng nhau, gần như bằng không. Tôi đã làm việc với các hợp đồng trong đó điều này không đúng, nhưng dường như đó là một ngoại lệ. Ngoài ra, kể từ khi đăng bài gốc của câu trả lời này, bối cảnh xung quanh nó đã thay đổi rất nhiều, Microsoft CDN đã có nhiều tiến bộ.

Dự án tôi hiện đang sử dụng cả hai CDN hoạt động tốt nhất cho giải pháp của chúng tôi. Một số yếu tố đóng vai trò này. Người dùng có một trình duyệt cũ hơn vẫn có thể thực hiện 2 yêu cầu đồng thời cho mỗi tên miền theo khuyến nghị của đặc tả HTTP . Đây không phải là vấn đề đối với bất kỳ ai chạy bất kỳ thứ gì mới, hỗ trợ pipelining (mọi trình duyệt hiện tại), nhưng dựa trên một yếu tố khác, chúng tôi cũng sẽ loại bỏ giới hạn này, ít nhất là cho đến javascript.

CDN của Google chúng tôi đang sử dụng cho:

CDN của Microsoft chúng tôi đang sử dụng cho:

Máy chủ của chúng tôi:

  • Combined.js? V = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Do một phần của quá trình xây dựng của chúng tôi là kết hợp và thu nhỏ tất cả javascript tùy chỉnh, chúng tôi thực hiện điều này thông qua trình quản lý tập lệnh tùy chỉnh bao gồm các phiên bản phát hành hoặc gỡ lỗi (không rút gọn) của các tập lệnh này tùy thuộc vào bản dựng. Vì Google không lưu trữ gói xác thực jQuery, đây có thể là một mặt trái. MVC bao gồm / sử dụng điều này trong bản phát hành 2.0 của họ, vì vậy bạn có thể hoàn toàn dựa vào CDN của Microsoft cho tất cả các nhu cầu của bạn và tất cả đều tự động thông qua ScriptManager .

Đối số duy nhất khác được đưa ra là thời gian DNS, có một chi phí cho điều này về tốc độ tải trang. Trung bình: Đơn giản vì nó được sử dụng nhiều hơn (nó tồn tại lâu hơn) ajax.googleapis.comcó khả năng được DNS trả về sớm hơn ajax.microsoft.com, đơn giản vì máy chủ DNS cục bộ có nhiều khả năng nhận được yêu cầu cho nó (đây là người dùng đầu tiên trong hình phạt khu vực) . Đây là một điều rất nhỏ và chỉ nên được xem xét nếu hiệu suất là cực kỳ quan trọng, xuống đến mili giây.
(Có: ​​Tôi nhận thấy điểm này trái với việc tôi sử dụng cả hai CDN, nhưng trong trường hợp của chúng tôi, thời gian DNS bị lu mờ rất nhiều bởi thời gian chờ đợi trên javascript / chặn xảy ra)

Cuối cùng, nếu bạn chưa xem nó, một trong những công cụ tốt nhất hiện có là Fireorms và một số plugin cho nó: Tốc độ trangYSlow . Nếu bạn sử dụng CDN nhưng các trang của bạn luôn yêu cầu hình ảnh vì không có tiêu đề bộ đệm, bạn đang thiếu trái cây treo thấp. Bảng điều khiển Net của Fireorms có thể nhanh chóng cung cấp cho bạn bảng phân tích nhanh về thời gian tải trang của bạn và Tốc độ trang / YSlow có thể cung cấp một số đề xuất tốt để trợ giúp.


26
Ít có khả năng bị chặn? Tôi muốn biết làm thế nào bạn nảy ra ý tưởng đó. Mạng MS không phải là MS dù sao, đó là akamai, những người đã làm các máy chủ cân bằng tải lâu hơn rất nhiều so với google, điều này làm cho vô nghĩa về "hệ thống dự phòng tốt hơn". Thực sự, nếu bạn định đưa ra yêu cầu như thế này, một số bằng chứng sẽ rất hay.
blowdart

16
Một số công ty và tôi đã làm việc cho một vài công ty, chặn * .microsoft.com hoàn toàn là một phần trong việc chặn cập nhật windows của họ. Điều này có đúng không? Không, nó có xảy ra không? Đúng. Ví dụ: ajax.microsoft.com/...it thuộc khối * .microsoft.com và không thuộc ngoại lệ www, nó bị chặn khi một công ty chọn chặn bất cứ thứ gì trừ www.microsoft.com. Tôi không nói nó rất có thể, tôi đã nói nó có nhiều khả năng hơn, vì tôi chưa bao giờ thấy google bị chặn nhưng đã thấy điều ngược lại.
Nick Craver

5
Và tôi đã thấy google bị chặn để chặn gmail tại các trang web của chính phủ. Nhưng vì nó rất hiếm, tôi hầu như không cố gắng sử dụng nó như một sự biện minh trong trường hợp này.
blowdart

19
Vì điều này đã được viết, MS đã thêm jQuery-UI vào CDN của họ: asp.net/ajaxl Library / cdn.ashx
Will Dean

3
@Nick Microsoft đã chuyển CDN từ ajax.microsoft.com sang ajax.aspnetcdn.com. Vì vậy, không có cơ hội chặn CDN của Microsoft như là một phần của việc chặn Cập nhật Windows.
Sachin Joseph

88

Bạn hoàn toàn nên sử dụng Google CDN cho jQuery (và điều này đến từ một nhà phát triển tập trung vào Microsoft).

Đó là số liệu thống kê đơn giản. Những người sẽ cân nhắc sử dụng MS CDN cho jQuery sẽ luôn là thiểu số. Có quá nhiều nhà phát triển không phải MS sử dụng jQuery, những người sẽ sử dụng Google và sẽ không xem xét sử dụng Microsoft. Vì một trong những chiến thắng lớn với CDN công cộng được cải thiện bộ nhớ đệm , việc chia tách sử dụng giữa nhiều CDN làm giảm tiềm năng cho lợi ích đó.


7
Nếu chúng ta cứ nghĩ như vậy thì chỉ lớn hơn mới có thể thở. Đừng chỉ sử dụng google vì đó là google và cho rằng mọi người đều ở với họ (không nghi ngờ gì nữa là với họ). Nhưng hãy để chiến thắng tốt nhất, so sánh kết quả và đi với họ.
mamu

20
Đó không phải là một giả định. Các trang web trong Alexa hàng đầu 200.000 sử dụng CDN của Google vượt quá 100: 1. Về mức độ phổ biến của bộ nhớ đệm, điểm duy nhất có lợi cho MS jQuery CDN là Microsoft.com sử dụng nó, điều này mang lại cho nó rất nhiều sự tiếp xúc từ một tài liệu tham khảo đó (nhưng không nhiều như hàng ngàn trang web hàng đầu tham khảo Google ).
Dave Ward

@DaveWard, bạn có thể xác minh đây vẫn là trường hợp đó không, hoặc các bảng có phần nào thay đổi trong vài năm qua không?
gắt gỏng

3
@snumpy: Google CDN đã mở rộng vị trí dẫn đầu của nó khá nhiều so với những gì tôi đã thấy. Không có gì sai với Microsoft CDN. Nó nhanh và có một vài tệp mà Google không có. Tuy nhiên, lợi ích của bộ nhớ đệm chéo trang phụ thuộc vào phạm vi phủ sóng toàn mạng và Google thống trị tất cả những người khác về vấn đề đó.
Dave Ward

Vì tôi đã chuyển từ jQuery CDN sang Microeoft để lưu trữ jQuery Mobile, tôi đã chuyển các bản tải xuống jQuery khác của mình sang Google để giảm số lượng vòng tròn DNS. Chỉ là một yếu tố khác :)
Rob Grant

20

Google sẽ gửi cho bạn một phiên bản jQuery được thu nhỏ bằng phần mềm của riêng họ, phiên bản này nhẹ hơn 6kb so với phiên bản rút gọn tiêu chuẩn do MS cung cấp. Đi cho Google.


18

Một điều nhỏ cần xem xét là cả hai công ty đều cung cấp các thư viện "phụ" khác nhau một chút:

Tùy thuộc vào nhu cầu của bạn, điều này có thể có liên quan.


23
Vì điều này đã được viết, MS đã thêm jQuery-UI vào CDN của họ: asp.net/ajaxl Library / cdn.ashx
Sẽ bắt đầu

15

Cũng cần lưu ý rằng vì ajax.microsoft.com là một tên miền phụ của microsoft.com yêu cầu gửi tất cả cookie microsoft.com thêm vào tổng thời gian cần thiết để lấy lại tệp.

Ngoài ra, ajax.microsoft.com đang sử dụng nén IIS7 mặc định, kém hơn so với nén tiêu chuẩn mà các máy chủ web khác sử dụng.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

Ngoài ra, như những người khác đã đề cập google CDN là cách phổ biến hơn, điều này làm tăng đáng kể khả năng tệp được lưu trữ.

Vì vậy, tôi khuyên bạn nên sử dụng google.


3
Đây là một sự phản đối tốt vào thời điểm đó, nhưng không còn được áp dụng vì tên miền CDN được đề xuất bây giờ là ajax.aspnetcdn.com. Việc chặn phản đối * .microsoft.com cũng không còn được áp dụng.
Stephen Kennedy

đây là sự thật rất vui vì cuối cùng họ đã sửa phần này của nó. Bây giờ tôi không cảm thấy quá tệ về việc bao gồm plugin jquery xác thực / chu kỳ từ ms cdn.
Alistair

Điều cookie cũng không còn áp dụng vì chuyển sang aspnetcdn.
Rob Grant

11

Nó có thể không quan trọng, nhưng bạn có thể xác nhận điều này với một số thử nghiệm A / B. Gửi một nửa lưu lượng truy cập của bạn đến một CDN, và một nửa cho lưu lượng khác và thiết lập một số hồ sơ để đo lường phản hồi. Tôi nghĩ điều quan trọng hơn là có thể chuyển đổi dễ dàng trong trường hợp cái này hoặc cái kia có một số vấn đề không có sẵn nghiêm trọng.


7

Tôi biết tôi đang ở đây muộn một chút, nhưng đây là mã mà tôi đã sử dụng trong sản xuất. Tôi chưa bao giờ gặp vấn đề với nó, nhưng số dặm của bạn có thể thay đổi. Hãy chắc chắn rằng bạn kiểm tra nó trong môi trường của riêng bạn.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
Thật không may, một số trình duyệt (IE6) sẽ không trì hoãn việc xử lý tập lệnh trực tuyến đó cho đến khi tập lệnh src = được tải để nó không hoạt động như mong đợi. Chúc nó sẽ như thế!
Walden Leverich

2
Vì vậy, người dùng IE6 của bạn trải nghiệm hơi chậm. Đánh đổi tốt nếu bạn hỏi tôi. IE6 đang suy giảm ... ngay cả trong mạng nội bộ của Công ty.
Armstrongest

7

Đó là về thống kê: jquery.com tải jQuery từ Google. Và Twitter, Stackoverflow và nhiều người khác cũng vậy. Vì vậy, có khả năng khá cao là người dùng trang web của bạn đã có bộ nhớ cache = không tải xuống chút nào .

Quên trình xác nhận, băng thông và tốc độ vì đây là lợi ích chính. Mặt khác, bất kỳ tùy chọn CDN nào khác sẽ thực hiện về cơ bản ở cùng cấp độ.


1
Vâng, nhưng Twitter (theo encosia.com/2010/09/15/ cướp ) của Dave Ward sử dụng jQuery 1.3.0 (trong Twitter "cũ") để chúng không thực sự quan trọng ... nhưng ...
veggerby

Chà, các trang web tôi đã làm cách đây một thời gian vẫn sử dụng jQuery 1.3.0, như Twitter (cũ). Nó luôn luôn quan trọng.
achairapart

6

Là một tiềm năng nhanh hơn so với người khác?

Tôi thực sự tò mò về điều này vì vậy tôi đã thiết lập một trang thử nghiệm jsbin bằng cách sử dụng từng trang sau đây và sau đó chạy nó thông qua công cụ so sánh trực quan của webpagetest.org. Tôi đã thử nghiệm:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

Ai nhanh nhất: code.jquery.com 0,1 giây trong cả hai bài kiểm tra

Ai chậm nhất: ajax.aspnetcdn.com 0,7 giây trong lần thử nghiệm đầu tiên và ajax.googleapis.com 1 giây trong thử nghiệm thứ hai

Đây là bài kiểm tra đầu tiên (mỗi bài kiểm tra 3 lần):

Video: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Báo cáo: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Đây là bài kiểm tra thứ 2 (3 khác):

Video: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Báo cáo: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

Như Pingdom đã nêu :

Khi ai đó truy cập trang web của bạn, nếu họ đã truy cập một trang web khác sử dụng cùng một tệp jQuery trên cùng một CDN, thì tệp đó sẽ được lưu vào bộ nhớ cache và hoàn toàn không cần phải tải xuống. Nó không thể nhận được bất kỳ nhanh hơn thế.

Điều này có nghĩa là CDN được sử dụng rộng rãi nhất sẽ có tỷ lệ cược về phía nó, có thể trả hết cho trang web của bạn.

Một vài quan sát về hiệu suất: CDN của Google luôn chậm nhất trong ba loại ở cả Bắc Mỹ và Châu Âu. Ở châu Âu, CDN của Microsoft là nhanh nhất.


3

Tôi nghĩ rằng nó phụ thuộc vào đối tượng mục tiêu của bạn ở đâu. Bạn có thể sử dụng alertra.com để kiểm tra cả tốc độ CDN từ nhiều địa điểm trên thế giới.


Điều này không cung cấp một câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ một tác giả, hãy để lại nhận xét bên dưới bài đăng của họ.
Fiona - myaccessible.website

1
Đối với Fiona, đó là câu trả lời của tôi cho câu hỏi. Câu hỏi là "có vấn đề gì không", câu trả lời của tôi là "nó phụ thuộc vào vị trí của đối tượng mục tiêu của anh ấy" và tôi đã cung cấp một trang web để kiểm tra tốc độ từ những nơi khác nhau trên thế giới để cho anh ấy quyết định sử dụng CDN nào. Nó không phải là một bình luận, đó là một câu trả lời.
im lặng

3

Thêm một cân nhắc - nếu trang web của bạn là SSL và bạn cần hỗ trợ Android 2.1 (hoặc cũ hơn), chứng chỉ SSL trên phiên bản HTTPS của Microsoft CDN sẽ làm sập các phiên bản trình duyệt Android đó, theo vấn đề này: http: // code .google.com / p / android / vấn đề / chi tiết? id = 5001 . Đó không phải là "lỗi" của Microsoft, vì chứng chỉ SSL có giá trị về mặt kỹ thuật và lỗi là do triển khai SSL của Android ... nhưng dù sao nó cũng sẽ làm sập trang web của bạn.

Chứng chỉ SSL trên CDN của Google không ảnh hưởng đến vấn đề cụ thể này (liên quan đến "Tên đối tượng chứng chỉ" của chứng chỉ).

Vì vậy, để hỗ trợ SSL + Android 2.1, hãy sử dụng Google CDN.


2

Câu trả lời của tôi hơi khác so với những người khác, tôi sẽ đi với microsoft nếu bạn cần trình xác thực jquery mà hầu như mọi người đều cần nếu bạn đang sử dụng jquery.

Kết nối Microsoft CDN http là Keep-Alive, đây là điểm cộng lớn khi bạn yêu cầu nhiều mục.

Vì vậy, nếu bạn cần xác thực jquery thì hãy sử dụng Microsoft CDN, ngay cả khi bạn cần jquery ui, hãy sử dụng microsoft vì google không tiếp tục duy trì để mọi yêu cầu đều thuộc về mình. vì vậy trộn theo cách đó là cộng. nếu bạn chỉ sử dụng microsoft cho trình xác nhận thì bạn đang thực hiện kết nối riêng với máy chủ google cho mỗi yêu cầu.



1

Cũng xem xét khi sử dụng Google CDN rằng một số lần mọi người tạo ra các lỗi chính tả như ajax.googelapis.com. Điều này có khả năng có thể tạo ra một cuộc tấn công xss (kịch bản chéo trang) thực sự khó chịu. Tôi đã thực sự kiểm tra điều này bằng cách đăng ký một lỗi đánh máy của googlapis.com và rất nhanh thấy mình đang phục vụ các yêu cầu cho javascript, bản đồ, css, v.v.

Tôi đã gửi email cho Google và yêu cầu họ đăng ký URL đánh máy CDN tương tự nhưng không nhận được phản hồi. Đây có thể là một lý do thực sự để không phụ thuộc vào CDN vì có những kẻ tấn công nguy hiểm tiềm tàng đang chờ các yêu cầu đánh máy và có thể dễ dàng phục vụ jquery, v.v. với tải trọng xss.

Cảm ơn bạn


1
một chút lạc đề có thể, nhưng điểm thú vị.
achairapart

1

Tùy thuộc vào ngành mà mục tiêu ứng dụng, bạn có thể không muốn sử dụng CDN do các tổ chức khác quản lý. Nó thường đặt ra các vấn đề liên quan đến tuân thủ, quyền riêng tư và bảo mật.

Ví dụ: khi bạn đưa Google Analytics vào một ứng dụng bảo mật, trình duyệt vẫn gửi URL hiện tại dưới dạng tiêu đề "người giới thiệu". Bất kỳ số nhận dạng nào, giả sử id phiên hoặc mã thông báo bí mật có thể xuất hiện trong nhật ký của họ. Ví dụ: nếu IP khách của 192.0.2.5references https: //healthsystem.example/condition/impotence , thì tốt, bạn có thể suy ra thông tin được coi là khá riêng tư.

Các trường hợp khác bao gồm thông tin về hậu quả, chẳng hạn như số tài khoản, số an sinh xã hội hoặc thông tin phiên trong URL. Loại dữ liệu đó không bao giờ nên có trong URL vì nó có thể được sử dụng bên ngoài ứng dụng.

Mặc dù bạn có thể tin tưởng Google, Microsoft hoặc Yahoo, nhưng người dùng của bạn có thể không.

Đối với các ngành như Tài chính, Pháp lý và Chăm sóc sức khỏe, bạn có thể muốn thiết lập CDN của riêng mình với sự trợ giúp của nhà cung cấp (ví dụ: Akamai) mà bạn có thể ký BAA.


1

Tôi sẽ khuyên bạn nên sử dụng vị trí chung của người dùng mà bạn đang nhắm mục tiêu.

Nếu trang web của bạn được nhắm mục tiêu cho công chúng nói chung, thì sử dụng CDN của Google sẽ là một lựa chọn tốt.

Nếu trang web của bạn cũng được nhắm mục tiêu tại Trung Quốc, thì sử dụng CDN của Microsoft sẽ là lựa chọn tốt hơn. Tôi biết từ kinh nghiệm của mình, khi các máy chủ của Google liên tục bị chính phủ Trung Quốc chặn, khiến các trang web sử dụng chúng không thể tải được.

* Lưu ý rằng bạn có thể tạo các trang web cụ thể theo vùng, ví dụ như cn.mysite.com để phục vụ riêng cho Trung Quốc, nhưng nếu bạn thiếu tài nguyên và thời gian, thì đáng để xem xét.

Danh sách đầy đủ của Microsoft CDN tại đây. http: //www.asp.net/ajaxl Library / cdn.ashx

Kể từ đó, họ đã đổi tên thành ajax.aspnetcdn.com , điều này làm giảm khả năng tắc nghẽn bởi các quy tắc tường lửa.


-3

Tôi sẽ sử dụng cả hai!

Vì lưu trữ Google Jquery đã tồn tại lâu hơn rất nhiều, nên khả năng mọi người sẽ có bộ nhớ cache cao hơn nhiều so với Microsoft, vì vậy tôi sẽ có nó trước.

Cá nhân, tôi sẽ sử dụng một cái gì đó như thế này -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Không chắc chắn 100% này hoạt động, nhưng tôi chỉ định viết ý tưởng chứ không phải ví dụ - Điều này tham khảo Google lưu trữ Jquery chứ không phải Microsoft vì tôi không thể tìm thấy liên kết)


6
jQuery sẽ không bao giờ được định nghĩa trừ khi bạn đưa nó vào trang của bạn. Bộ nhớ đệm tệp .js doe snot làm cho nó có sẵn cho tất cả các trang trình duyệt theo mặc định!
Falkayn

1
Điều này hoạt động: S Đọc lại tập lệnh - nếu nó không được xác định, nó sẽ viết cái này và tải?
Wil

12
Tôi chưa bao giờ hiểu tại sao mọi người làm "<Scr" + "ipt ..."
kẻ hèn nhát ẩn danh

3
"Tùy thuộc vào trình duyệt, số lượng javascript trước đó và mã tổng thể được hình thành tốt như thế nào, điều này được thực hiện để ngăn trình phân tích cú pháp diễn giải các thẻ <script> và </ script> dưới dạng mã thực thi thay vì dưới dạng chuỗi Được viết."
SeanJA

2
Vấn đề là điều đó jQuerysẽ không bao giờ được xác định trừ khi bạn chủ động tải nó. Trong tập lệnh của bạn, nhánh đầu tiên sẽ luôn được thực thi (trừ khi bạn có một bao gồm jQuery khác ở trên), khiến cho tập lệnh trở nên thừa.
jensgram
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.