Dlaczego powinienem używać CDN Google dla jQuery?

169

Dla niektórych może to być oczywiste, ale zastanawiałem się: dlaczego mam polegać na serwerze Google, aby hostować jQuery dla mojej witryny?

Czy to tylko dlatego, że w ten sposób ładuje się szybciej?

Yvette
źródło
1
Związane z: stackoverflow.com/questions/547384/…
Jørn Schou-Rode
2
Nikt nie wspomina, jakie były zasady Google dotyczące hotlinkowania do ich plików JS (biorąc pod uwagę, że hotlinkowanie jest zwykle mile widziane), więc oto adres URL, pod którym Google wspomina, że ​​jest to w porządku, i więcej o bibliotekach, które hostują
Loftx
1
Wielu użytkowników już pobrało jQuery z Google lub Microsoft podczas odwiedzania innej witryny. W rezultacie zostanie załadowany z pamięci podręcznej, gdy odwiedzą twoją witrynę, co prowadzi do szybszego ładowania
AminM
Nie należy używać Microsoft ani Google. Użyj MaxCDN. Znacznie bardziej prawdopodobne, że trafi do pamięci podręcznej, co jest najważniejsze tutaj blog.jquery.com/2014/01/14/ ...
0fnt

Odpowiedzi:

393

To dlatego, że:

  1. Zwiększa dostępną równoległość.
    (Większość przeglądarek pobiera jednocześnie tylko 3 lub 4 pliki z dowolnej witryny).

  2. Zwiększa szansę na trafienie w pamięci podręcznej.
    (Im więcej witryn stosuje tę praktykę, tym więcej użytkowników ma już gotowy plik).

  3. Zapewnia, że ​​ładunek będzie tak mały, jak to tylko możliwe.
    (Google może wstępnie skompresować plik w szerokiej gamie formatów (takich jak GZIP lub DEFLATE). To sprawia, że ​​czas pobierania jest bardzo mały, ponieważ jest on bardzo skompresowany i nie jest kompresowany w locie.)

  4. Zmniejsza przepustowość używaną przez serwer.
    (Google zasadniczo oferuje darmową przepustowość).

  5. Gwarantuje, że użytkownik otrzyma bliską geograficznie odpowiedź.
    (Google ma serwery na całym świecie, co dodatkowo zmniejsza opóźnienia).

  6. (Opcjonalnie) Będą automatycznie aktualizować Twoje skrypty.
    (Jeśli lubisz „latać w spodniach”, zawsze możesz użyć najnowszej wersji dowolnego oferowanego przez nie skryptu. Mogą one naprawić luki w zabezpieczeniach, ale generalnie po prostu zepsują Twoje rzeczy).
John Gietzen
źródło
10
Uwielbiam to, jak wymyślasz coraz więcej powodów. +1 tylko za to.
Matchu
6. Serwery Google są prawdopodobnie szybsze niż Twoje! Nie jestem pewien, czy punkt 3 jest naprawdę istotny, ponieważ każdy może minifikować tak samo dobrze, jak Google. +1 za świetną odpowiedź :)
Paul Creasey,
1
Wydaje mi się, że # 3 prawdopodobnie ma więcej wspólnego z gzipem i tym podobnymi, ponieważ jQuery udostępnia już zminimalizowaną wersję.
Matchu
2
Boże, wszyscy mnie atakowali, właśnie wysłałem swoje pomysły i zostałem zaakceptowany, LOL
Farshad,
1
@farshad: Nie atakuję cię, atakujesz zaakceptowaną odpowiedź, która nie była tak dobra jak następna odpowiedź. W ten sposób działają pytania i odpowiedzi społeczności. Następnym razem spróbuj sformatować swoją odpowiedź nieco bardziej profesjonalnie i ogranicz krytykę pytania do użytecznej, konstruktywnej formy.
Joel
58

Istnieje kilka scenariuszy, w których możesz nie chcieć używać jQuery z sieci CDN Google:

  1. Podczas tworzenia aplikacji intranetowej, w której serwer WWW znajduje się w tej samej sieci, co klienci. Jeśli korzystasz z usługi CDN jQuery firmy Google, będziesz wykonywać połączenia z Internetem, a nie z serwerem sieciowym w sieci lokalnej. Zwiększa to przepustowość Twojej organizacji i działa wolniej.

  2. Gdy chcesz uruchomić aplikację w trybie offline . (Całkiem powiązane z pierwszym problemem) Jeśli potrzebujesz pracować na środowisku programistycznym (zarządzanym na przykład przez Bower ), być może będziesz musiał sprawić, by aplikacja działała bez połączenia z Internetem (np .: w pociągu :)

  3. Kiedy potrzebujesz go dostosować . Na przykład, jeśli używasz Grunt do budowania biblioteki, aby używać tylko niektórych modułów lub ustawiając nazwę AMD

  4. Gdy obsługujesz strony przez SSL, które wymagają jQuery. Powinieneś udostępniać JavaScript przez SSL, jak również swoją stronę, aby uniknąć problemów z bezpieczeństwem i ostrzeżeń.

Ponadto Microsoft udostępnia jQuery w swojej sieci CDN. To kolejny wybór porównywalny z korzystaniem z jQuery hostowanego przez Google.

Lance Fisher
źródło
35
Tylko do Twojej wiadomości, że możesz używać serwerów Google do obsługi wersji SSL hostowanych bibliotek javascript. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js działa.
Aaron Wagner
Dobrze wiedzieć, Aaron. Dzięki.
Lance Fisher
3
+1 za wzmiankę o firmie Microsoft. Google pobiera sposób zbyt dużo kredytów imo.
Tak, Barry,
7
Również FYI: Schemat względne hiperłącza, takie jak src="//ajax.googleapis.com/...", działają.
John Gietzen,
3
Weź również pod uwagę cndjs
Bryce
29

To badanie przeprowadzone przez TJ VanToll przekonało mnie, że lepiej jest połączyć jQuery z innymi skryptami niż ładować go z CDN.

Powodem jest opóźnienie związane z pobieraniem jQuery na urządzenia mobilne:

„W 2012 r. Średni czas RTT w sieci komórkowej w Stanach Zjednoczonych wynosił 344 ms. A ten 344 ms dotyczy nie tylko każdego żądania HTTP - które obecnie wykonuje średnia strona internetowa 93 - ale także każdego wyszukiwania DNS i połączenia TCP ... Chociaż średnie RTT poprawiają się, można uzyskać tylko niewielkie dodatkowe korzyści, ponieważ obecne sieci mieszczą się w niewielkim stopniu teoretycznej granicy dyktowanej przez fizykę.

Cytuje również ten post Steve'a Soudersa, który pokazuje, dlaczego jest mało prawdopodobne, aby korzystanie z CDN przyniosło korzyści z buforowania :

„Ze względu na fragmentację dostawców CDN, wersji jQuery i wykorzystania protokołów (http vs. https), szanse na trafienie w pamięci podręcznej CDN są szokująco niskie - a pobieranie z domeny zewnętrznej ma potencjał, aby wykonać nie jedną, ale trzy wycieczki w obie strony (wyszukiwanie DNS, połączenie TCP i HTTP GET). ”

cantera
źródło
3
Nie dotyczy to już protokołów HTTP2 i SPDY. Dzisiaj możesz hostować wszystkie swoje zasoby zewnętrzne w CDN, takim jak Cdnjs.com lub coś w tym rodzaju, a wszystkie pliki będą pobierane przy użyciu tego samego żądania. To w zasadzie to samo, co concatenate.
Ricardo Polo Jaramillo,
13

Największą korzyścią jest buforowanie. Teoria mówi, że jeśli odwiedzający odwiedził witrynę, która ładowała swoje biblioteki JavaScript, powiedzmy jQuery, na przykład z Google CDN, to kiedy odwiedza Twoją witrynę, biblioteka jest już w pamięci podręcznej przeglądarki tego użytkownika i nie będzie trzeba jej ponownie pobierać . W teorii brzmi to świetnie.

Korzyści dzielone tutaj i gdzie indziej są teoretyczne. Właśnie trafiłem na dogłębną analizę korzystania z CDN i czy zapewnia ona oczekiwane korzyści w zakresie wydajności. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

Matt Moor
źródło
Ta odpowiedź jest rażąco niedoceniana. Zapewnia równie ważne „wady”, jak powyżej zaakceptowanej odpowiedzi „za”.
Thomas Wana
@ user239558 Link nie byłby martwy, gdyby autor badania faktycznie użył CDN ;-) Błąd: [function.require]: nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain
Artykuł nie jest dobrze przemyślany. Mówi się, że najmniej popularne biblioteki jQuery są obsługiwane przez Google CDN na około 0,5% wszystkich stron. Podczas ogólnej sesji przeglądania odwiedzam mnóstwo stron, zwłaszcza te małe linki do witryn, takich jak na przykład ta, która je hostuje. Lub witryny z blogami. Z łatwością odwiedzam 30 unikalnych witryn dziennie, po tygodniu szanse na to, że nie zostaną zapisane w pamięci podręcznej, są niewielkie. Chociaż może nie być buforowany dla wszystkich użytkowników, osoby, które intensywnie korzystają z Internetu, prawie zawsze będą je buforować, ponieważ odwiedzają łącznie znacznie więcej niż jedną unikalną domenę.
Aidiakapi
8

Głównym powodem, aby NIE pozwolić Google hostować Twojego jQuery, o którym wiele osób nie myśli, jest to, że nie zostanie on pobrany, jeśli jesteś w Chinach. Jest blokowany wraz z wieloma innymi skryptami, czcionkami itp ... hostowanymi przez Google CDN. Jeśli chcesz dotrzeć do chińskiej publiczności, najlepiej zawsze używać rozwiązania awaryjnego hostowanego na własnym serwerze. Google APIS zablokowany w Chinach

Joshua Maddox
źródło
Nie zgadzam się @tmthydvnprt. Pytanie jest uparte, więc na tym polega większość winy, ale to odpowiedź na pytanie.
Goodbye StackExchange
1
Przyjechałem tu po to samo. Jeśli użytkownicy są w Chinach, większość wszystkiego od Google jest blokowana przez wielką zaporę ogniową. Chociaż prawdopodobnie nie stanowi to problemu, ponieważ wiele osób w Chinach korzysta z usługi VPN, a prawdopodobnie i tak nie chcesz kierować reklam na chiński rynek.
Justin
0

Oto kilka dobrych odpowiedzi: „Dlaczego powinieneś ...” i „Dlaczego nie powinieneś ...”

Chcę po prostu dodać listę alternatyw do Google, jeśli chcesz załadować jQuery z CDN.

Podsumowując, w zasadzie poprawiasz ogólną wydajność swojej witryny / aplikacji.

EdwardM
źródło
0

Używając CDN z Service Worker, możesz pobrać CDN raz w życiu klienta, a nie za każdym razem, gdy aktualizujesz kod.

Oscar Gardiazabal
źródło