Microsoft CDN dla jQuery czy Google CDN? [zamknięte]

Czy naprawdę ma znaczenie, którego CDN używasz do linkowania do pliku jquery lub dowolnego pliku javascript. Czy jeden jest potencjalnie szybszy od drugiego? Jakie inne czynniki mogą odegrać rolę, w której cdn zdecydujesz się użyć? Wiem, że Microsoft, Yahoo i Google mają teraz CDN.

Author: Ufuk Hacıoğulları, 2009-09-19

18 answers

Aktualizacja na podstawie komentarzy:

Krótka wersja: to nie ma większego znaczenia, ale może zależeć od tego, co hostują. Wszystkie hostują różne rzeczy: Google nie obsługuje jQuery.Potwierdź, Microsoft nie hostował jQuery-UI,od 2016 roku tak!!, Microsoft oferuje swoje skrypty, które w przeciwnym razie byłyby obsługiwane przez ScriptResource.axd i łatwiejszą integrację (np. ScriptManager z ASP.Net 4.0).

Ważna Uwaga: jeśli budujesz intranet aplikacji, trzymaj się z dala od podejścia CDN. Nie ma znaczenia, kto go hostuje, chyba że jesteś na bardzo przeciążonym serwerze wewnętrznie, żaden CDN nie da ci większej wydajności niż lokalny ethernet 100MB/1GB. Jeśli używasz CDN do ściśle wewnętrznej aplikacji, to szkodzi wydajności . Ustaw poprawnie nagłówki wygaśnięcia pamięci podręcznej i Ignoruj CDN w scenariuszu tylko dla intranetu.

Szanse na zablokowanie wydają się być równe, prawie zero. Pracowałem na kontraktach, gdzie to nie jest prawda, ale wydaje się, że jest to wyjątek. Ponadto, od czasu pierwotnego opublikowania tej odpowiedzi, kontekst otaczający ją znacznie się zmienił, Microsoft CDN dokonał dużego postępu.

Projekt, nad którym obecnie pracuję, wykorzystuje oba CDN, które najlepiej sprawdzają się w naszym rozwiązaniu. Bierze w tym udział kilka czynników. Użytkownicy ze starszą przeglądarką nadal prawdopodobnie wykonują 2 jednoczesne żądania na domenę zgodnie z zaleceniami HTTP Specyfikacja . Nie jest to problem dla nikogo, kto uruchamia coś przyzwoicie nowego, że obsługuje pipelining (każda bieżąca przeglądarka), ale w oparciu o inny czynnik eliminujemy to ograniczenie, jak również, przynajmniej jeśli chodzi o javascript.

CDN Google ' a używamy do:

CDN Microsoftu, którego używamy za:

Nasz serwer:

  • razem.js?v=2.2.0.6190 (Major.Drobne.Iteracja.Changeset)

Ponieważ częścią naszego procesu budowania jest łączenie i minifikowanie wszystkich niestandardowych skryptów javascript, robimy to za pomocą niestandardowego menedżera skryptów, który zawiera wydanie lub debugowanie (nie-minified) wersje tych skryptów w zależności od kompilacji. Ponieważ Google nie obsługuje pakietu walidacji jQuery, może to być strona w dół. MVC włącza / używa tego w ich wydaniu 2.0, więc możesz całkowicie polegać na CDN Microsoftu dla wszystkich Twoich potrzeb, i wszystko to automatycznie za pomocą ScriptManager .

Jedynym argumentem, który należy podać, są czasy DNS, jest to koszt pod względem szybkości ładowania strony. średnio: Po prostu dlatego, że jest używany bardziej ajax.googleapis.com prawdopodobnie zostanie zwrócony przez DNS wcześniej niż ajax.microsoft.com, po prostu dlatego, że lokalny serwer DNS był bardziej skłonny do otrzymania żądania (jest to pierwszy użytkownik w obszarze kary). To jestbardzo drobna rzecz i powinna być brana pod uwagę tylko wtedy, gdy wydajność jest niezwykle ważna, aż do milisekundy.
(tak: zdaję sobie sprawę, że ten punkt jest sprzeczny z moim używaniem obu CDN, ale w naszym przypadku czas DNS jest znacznie przyćmiony przez czas oczekiwania na javascript / blokowanie, które występuje)

Na koniec, jeśli nie przyjrzałeś się temu, jednym z najlepszych narzędzi jest Firebug i kilka wtyczek do niego: Page Speed i YSlow . Jeśli używasz CDN, ale twoje strony za każdym razem żądają obrazów z powodu braku nagłówków pamięci podręcznej, brakuje Ci nisko wiszącego owocu. Firebug ' s Net panel może szybko dać szybki podział czasu ładowania strony, a Page Speed / YSlow może zaoferować kilka dobrych sugestii, aby pomóc.

 150
Author: Nick Craver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-29 16:23:10

Powinieneś bezwzględnie używać Google CDN dla jQuery(a to pochodzi od programisty skoncentrowanego na Microsoft).

To proste statystyki. Ci, którzy rozważą użycie MS CDN dla jQuery, zawsze będą w mniejszości. Jest zbyt wielu programistów nie-MS używających jQuery, którzy będą używać Google i nie rozważyliby używania Microsoftu. ponieważ jedną z największych wygranych z publicznym CDN jest ulepszone buforowanie , Podział użycia między wiele CDN zmniejsza potencjał tego korzyści.

 88
Author: Dave Ward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-26 17:37:30

Google wyśle Ci minifikowaną wersję jQuery z własnym oprogramowaniem, ta wersja jest o 6kb lżejsza od standardowej minifikowanej wersji obsługiwanej przez MS.Go dla Google.

 20
Author: Oscar Kilhed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-30 12:55:27

Jedną drobną rzeczą do rozważenia jest to, że obie firmy oferują nieco inne" dodatkowe " biblioteki:

W zależności od potrzeb może to być istotne.

 18
Author: dp.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-15 12:26:55

Należy również zauważyć, że jako ajax.microsoft.com jest sub domeną microsoft.com prośby wyślij wszystkie microsoft.com pliki cookie zwiększają ogólny czas potrzebny na odzyskanie pliku.

Również, ajax.microsoft.com używa domyślnej kompresji IIS7, która jest gorsza od standardowej kompresji używanej przez Inne Serwery WWW.

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

Http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26,5 K

Również, jak inni wspominali, Google CDN jest o wiele bardziej popularny, co znacznie zwiększa szansę na buforowanie pliku.

Więc zdecydowanie polecam korzystanie z google.

 15
Author: Alistair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 22:46:38

To prawdopodobnie nie ma znaczenia, ale możesz to potwierdzić testami A / B. Wyślij połowę ruchu do jednego CDN, a połowę do drugiego i skonfiguruj profilowanie, aby zmierzyć odpowiedź. Myślę, że ważniejsze jest, aby móc łatwo przełączać się w przypadku, gdy jeden lub drugi miał poważne problemy z niedostępnością.

 11
Author: lod3n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-18 23:20:25

Wiem, że trochę się spóźniam, ale oto kod, którego używam w produkcji. Nigdy nie miałem z tym problemów, ale twój przebieg może się różnić. Upewnij się, że przetestujesz go we własnym środowisku.

<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> 
 7
Author: Jeremy Cade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-12 11:29:57

Chodzi o statystyki: jquery.com ładuje jQuery z Google. Podobnie jak Twitter, Stackoverflow i wiele innych. Tak więc, istnieje dość duże możliwości, że użytkownik witryny już go buforowane = Brak pobierania w ogóle.

Zapomnij o validator, bandwith i speed, ponieważ jest to główna korzyść. W przeciwnym razie każda inna opcja CDN będzie działać zasadniczo na tym samym poziomie.

 7
Author: achairapart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 02:38:23
Czy jeden jest potencjalnie szybszy od drugiego?

Sam byłem tego ciekaw, więc skonfigurowałem stronę testową jsbin, używając każdej z poniższych opcji, a następnie przepuściłem ją przez webpagetest.org porównywarka wizualna. Testowałem:

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

Kto był najszybszy: code.jquery.com o 0,1 sekundy w obu testach

Kto był najwolniejszy: ajax.aspnetcdn.com o 0,7 sekundy w pierwszym teście i ajax.googleapis.com o 1 sekundę w drugim teście

Oto pierwszy test (każdy był testowany 3 razy):

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

Sprawozdania: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Oto drugi test (kolejne 3):

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

Sprawozdania: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR

 4
Author: Anthony Hatzopoulos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-19 19:25:10

Myślę, że to zależy od tego, gdzie jest twoja docelowa grupa odbiorców. Możesz użyć alertra.com aby sprawdzić prędkość CDN z wielu lokalizacji na całym świecie.

 3
Author: silent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-11 08:36:29

Jedna dodatkowa uwaga-jeśli Twoja witryna jest SSL i musisz obsługiwać system Android 2.1( lub wcześniejszy), certyfikat SSL w wersji HTTPS Microsoft CDN spowoduje awarię tych wersji przeglądarki Android, w tym przypadku: http://code.google.com/p/android/issues/detail?id=5001 . to nie jest "wina" Microsoftu, ponieważ certyfikat SSL jest technicznie ważny, a wada jest w implementacji SSL Androida... ale mimo to zawiesi Twoją witrynę.

Certyfikat SSL na CDN Google nie spadnie z tego konkretnego problemu(odnoszącego się do certyfikatu "nazwa Alt tematu certyfikatu").

Więc, dla SSL + Android 2.1 Wsparcie, użyj Google CDN.

 3
Author: Kent McNeill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-20 23:58:11

Według Pingdom :

Gdy ktoś odwiedza Twoją stronę, jeśli odwiedził już inną strona, która używa tego samego pliku jQuery na tym samym CDN, plik będzie zostały zapisane w pamięci podręcznej i nie muszą być pobierane w ogóle. Nie może. szybciej.

Oznacza to, że najczęściej używany CDN będzie miał szanse na jego strona, która może się opłacić za Twoją witrynę.

Kilka uwag na temat wydajności: CDN Google to konsekwentnie najwolniejszy z trzech zarówno w Ameryce Północnej, jak i Europie. W Europie CDN Microsoftu jest najszybszy.

 3
Author: mayank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-16 15:45:11

Moja odpowiedź jest nieco inna niż inne, pójdę z microsoft, jeśli potrzebujesz jQuery validator, który prawie każdy potrzebuje, jeśli używasz jquery.

Połączenie HTTP Microsoft CDN to Keep-Alive, co jest dużym plusem, gdy żądasz wielu elementów.

Więc jeśli potrzebujesz walidacji jquery to użyj Microsoft CDN, nawet jeśli potrzebujesz jQuery UI użyj microsoft, ponieważ google nie nie trzyma keep-alive więc każde żądanie jest na własną rękę. więc mieszanie w ten sposób jest plus. jeśli używasz microsoft tylko dla walidatora następnie robisz oddzielne połączenie z serwerem google dla każdego żądania.

 2
Author: mamu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-19 04:56:32

W summery pisze, że microsoft nie oferuje UI, to nie jest poprawne (już). Można go pobrać pod adresem http://www.asp.net/ajaxlibrary/cdn.ashx .

 1
Author: Netsi1964,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-04 13:09:08

Należy również wziąć pod uwagę podczas korzystania z Google CDN, że czasami ludzie popełniają literówki, takie jak ajax.googelapis.com. może to potencjalnie stworzyć naprawdę paskudny atak XSS (cross Site scripting). Przetestowałem to rejestrując googlapis.com literówka i bardzo szybko znalazłem się obsługując prośby o javascript, mapy, css itp.

Wysłałem e-mail do Google i poprosiłem ich o zarejestrowanie podobnych adresów URL literówek CDN, ale nie odpisałem. To może być prawdziwy powód, aby nie polegać na CDN, ponieważ tam są potencjalnie niebezpiecznymi atakującymi oczekującymi na żądania literówek i mogą z łatwością obsługiwać jQuery itp. z ładunkiem XSS.

Thank you

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-15 21:12:52

Radzę oprzeć swoje użycie na ogólnej lokalizacji użytkowników, których kierujesz.

Jeśli Twoja witryna jest skierowana do ogółu społeczeństwa, dobrym wyborem będzie korzystanie z CDN Google.

Jeśli Twoja witryna jest również skierowana do Chin, lepszym wyborem będzie użycie CDN Microsoftu. Wiem z mojego doświadczenia, ponieważ serwery Google były blokowane przez chiński rząd, co sprawiało, że strony internetowe, które ich używają, nie były ładowane.

*zauważ, że możesz tworzyć cos miejsca w poszczególnych regionach, np. cn.mysite.com aby zaspokoić specjalnie dla Chin, ale jeśli masz mało zasobów i czasu, warto rozważyć.

Pełna lista Microsoft CDN tutaj. http://www.asp.net/ajaxlibrary/cdn.ashx

Zmienili nazwę na ajax.aspnetcdn.com , co zmniejsza prawdopodobieństwo zablokowania przez reguły Firewalla.

 1
Author: KnaveT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-18 01:09:51

W zależności od branży, której dotyczy aplikacja, możesz nie chcieć korzystać z CDN zarządzanego przez inne organizacje. Często rodzi problemy dotyczące zgodności, Prywatności i poufności.

Na przykład, gdy włączysz Google Analytics do bezpiecznej aplikacji, przeglądarka nadal wysyła bieżący adres URL jako nagłówek "referer". W ich dziennikach mogą pojawić się wszelkie identyfikatory, np. identyfikator sesji lub tajny token. Na przykład, jeśli IP klienta 192.0.2.5 odwołuje https://healthsystem.przykład / stan / impotencja , to dobrze, można wywnioskować informacje, które są uważane za raczej prywatne.

Inne przypadki obejmują informacje o konsekwencjach, takie jak numer konta, numer ubezpieczenia społecznego lub informacje o sesji w adresie URL. Tego rodzaju dane nigdy nie powinny znajdować się w adresie URL, ponieważ mogą być używane poza aplikacją.

Chociaż możesz ufać Google, Microsoft lub Yahoo, Twoi użytkownicy nie mogą.

Dla branż takich jak finanse, Akamai), z którym możesz podpisać BAA.

 0
Author: bloudraak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-16 02:31:52

Użyłbym obu!

Ponieważ hosting Google Jquery istnieje znacznie dłużej, szanse są znacznie większe, że ludzie będą już mieli go w pamięci podręcznej w porównaniu do Microsoft, więc chciałbym go mieć pierwszy.

Osobiście użyłbym czegoś takiego -

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
}

(nie jestem pewien, czy to w 100% działa, ale miałem zamiar napisać pomysł, a nie przykład - to odnosi się do Google hosted Jquery, a nie do Microsoftu, ponieważ nie mogłem znaleźć linku)

 -3
Author: Wil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-11 11:39:12