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?
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?
Odpowiedzi:
To dlatego, że:
Istnieje kilka scenariuszy, w których możesz nie chcieć używać jQuery z sieci CDN Google:
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.
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 :)
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
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.
src="//ajax.googleapis.com/..."
, działają.
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). ”
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
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
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.
Używając CDN z Service Worker, możesz pobrać CDN raz w życiu klienta, a nie za każdym razem, gdy aktualizujesz kod.