Korzyści vs. pułapki lokalnego hostowania jQuery [zamknięte]

85

Obecnie pobieramy biblioteki jQuery i jQueryUI (oraz jQueryUI CSS) z google CDN. Podoba mi się to, ponieważ mogę zadzwonić google.load("jquery", "1");
i zostanie użyty najnowszy jQuery 1.xx.

Teraz mam ściągnąć biblioteki lokalnie ze względu na bezpieczeństwo.

Chętnie wyciągam je lokalnie, ale zastanawiam się, na jakie inne korzyści i pułapki należy uważać?

orolo
źródło
5
o jakich kwestiach bezpieczeństwa mówimy?
Ascherer
Nie pytałem. Domyślam się, że to nie tyle bezpieczeństwo, ile próba kontrolowania przepustowości przez zaporę ogniową
Gmaila

Odpowiedzi:

109

Główną zaletą posiadania ich w CDN jest to, że pliki można pobierać równolegle z plikami pobieranymi z własnej witryny internetowej. Zmniejsza to opóźnienia na każdej stronie. Z drugiej strony jest to pułapka hostingu lokalnego - zwiększone opóźnienie . Głównym tego powodem jest to, że przeglądarki mają ograniczoną liczbę połączeń, które mogą w tym samym czasie nawiązać z tą samą domeną internetową. W IE6 domyślnie były to 2 równoczesne połączenia z tą samą domeną - współdzielone przez wszystkie otwarte okna IE !! W IE8 + poprawiło się, domyślnie 6, co jest wbudowane w FF / Chrome, ale nadal, jeśli masz dużo obrazów i nie używasz sprite'ów, doświadczysz dużego opóźnienia.

Korzystając z CDN, zawsze jawnie ustawiałbym wersję biblioteki, zamiast pobierać najnowszą. Zmniejsza to ryzyko złamania kodu przez nowe wersje. Niezbyt prawdopodobne w przypadku jQuery, ale możliwe.

Inną główną zaletą korzystania z CDN jest zmniejszenie ruchu w witrynie . Jeśli płacisz za GB lub znajdujesz się na serwerze wirtualnym z ograniczonymi zasobami, może się okazać, że ogólna wydajność witryny wzrasta, a koszty hostingu spadają, gdy przenosisz część zawartości do publicznej sieci CDN.

Upewnij się, że przeczytałeś również drugą odpowiedź na to pytanie autorstwa @Xaver. To bardzo dobra sztuczka

Daniel Dyson
źródło
5
Inną korzyścią wynikającą z jawnego ustawienia wersji biblioteki jest to, że Google daje jej dłuższy czas pamięci podręcznej, na przykład określenie 1.9.1 da dłuższy czas życia pamięci podręcznej niż samo żądanie 1.9 (ponieważ nowa wersja jQuery 1.9 może zostać wydana, ale 1.9.1 zawsze będzie to samo).
Barry
uhhh - revaxarts ? Nie widzę takiej odpowiedzi, ani aktualnej, ani usuniętej. Co to za „bardzo dobra sztuczka”?
ashleedawg
144

Zawsze używam CDN (Content Delivery Network) od Google. Ale na wypadek, gdybyś był offline:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>

Chwyć jQuery Google CDN i w razie potrzeby powróć do lokalnego

Edycja : jeśli nie potrzebujesz obsługi IE6, a Twoja witryna korzysta z częściowego protokołu HTTPS, możesz również usunąć http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Xaver
źródło
4
Podziękowania
24
XVIDEOS używa teraz tego rozwiązania: P
Shougo Makishima
Coś tu chyba brakuje ... Czy to podejście nie zakłada, że ​​jQuery załadowany przez CDN zostanie załadowany i zinterpretowany przed zinterpretowaniem następnej linii ( !window.jQuery...)? <script>tagi są przetwarzane asynchronicznie, prawda?
rinogo
2
<script>tagi są przetwarzane synchronicznie! W drugiej linii jQuery musi być już załadowane, ale na wszelki wypadek, jeśli nie, wstrzykujemy JS, aby załadować go lokalnie. document.writeNigdy nie zostanie wykonane, jeśli już istnieje jQuery.
Xaver
24

Inni objęli świadczenia. Pułapki:

  • Jeśli dołączasz zawartość tylko z własnego serwera, jest to jeden serwer, który musi działać - i nie jest blokowany przez zapory sieciowe itp. - aby witryna działała. Pobierz skrypt od strony trzeciej, a teraz są to dwa serwery, które muszą być uruchomione i odblokowane, aby Twoja witryna działała.

  • Każda witryna, z której pobierasz, <script>może całkowicie kontrolować doświadczenia użytkowników w Twojej witrynie. Jeśli Google czuje się źle, może umieścić coś w swojej kopii jQuery, aby rejestrować naciśnięcia klawiszy, wykradać dane osobowe ze strony, na której się znajdujesz, aby powiązać je z bazą danych śledzenia sieci, zmusić Cię do opublikowania postu „Uwielbiam Google!” komentarze do każdego formularza i tak dalej.

Google prawdopodobnie tak naprawdę tego nie zrobi, ale jest to czynnik, na który nie masz wpływu, a na pewno coś, o co należy się martwić w przypadku innych usług hostingu skryptów. Wcześniej zdarzały się incydenty, w których skrypty statystyk zostały przejęte przez programy ładujące złośliwe oprogramowanie.

Przed dołączeniem jakiegokolwiek skryptu od strony trzeciej - nawet na jednej stronie w Twojej witrynie - musisz w 100% zaufać im dzięki wszystkim funkcjom dostępnym dla użytkownika widocznym na tej nazwie hosta (w tym funkcjom administratora dostępnym w sieci).

bobince
źródło
21
Google by tego nie zrobił ... KOCHAM GOOGLE ... prawda? :-p
JasCav
1
Doskonałe uwagi dotyczące kwestii bezpieczeństwa.
Naltroc
1
Zalety: nigdy nie myślałem o tym, jak zdalny skrypt CDN mógłby zostać zhakowany, a następnie ściągnięty na moją stronę. Prawdopodobnie nie jest to powszechne w przypadku dużych bibliotek, takich jak jQuery, jQueryUI, Boostrap itp., Ale podobnie jak zauważone, mniejsze, mniej obsługiwane biblioteki mogą paść ofiarą, zwłaszcza jeśli nie są aktualizowane.
Zalety
14

Google CDN:

  • buforowanie, dobre dla wydajności, więcej użytkowników prawdopodobnie już to posiada i pobiera równolegle
  • jeśli kiedykolwiek, heaver zakazać CDN zepsuje się. masz przerąbane.
  • Jeśli nowa wersja zepsuje istniejące wtyczki lub witrynę, dowiesz się o tym prawdopodobnie za późno

Lokalnie:

  • rozwój bez podłączenia do sieci jest możliwy
  • nadal można uzyskać pewne korzyści związane z wydajnością, oprócz minifikacji za pomocą programu gzipping
Moin Zaman
źródło
5
jednak jQuery ładowane z cdn google jest zminimalizowane. Kolejnym plusem korzystania z CDN jest to, że jest bardziej przejrzysty dla struktury katalogów :)
Ascherer
if a new version breaks your existing plugins or site, you'll know about it possibly too latemożesz określić wersję w linku CDN, aby tego uniknąć.
Adam
13

Wolę używać mojej wersji lokalnej, ponieważ nie mam kontroli nad tym, co zapewnią. Na przykład nie chcę, aby moi użytkownicy zostali dotknięci przez Google-Analytics lub coś podobnego, ponieważ jest to problem prawny w moim kraju.

Dr Molle
źródło
9

Korzyści: (specjalnie dla CDN Google)

  1. Pobiera się równolegle z plikami. Inne odpowiedzi odnoszą się do tego dalej
  2. Serwery Google będą prawdopodobnie w stanie szybciej fizycznie dostarczyć zawartość
  3. Typowe biblioteki i struktury mogą już znajdować się na komputerze użytkownika, ponieważ pamięć podręczna HTTP dla CDN jest uniwersalna we wszystkich witrynach
  4. Twoja przepustowość nie musiałaby iść na obsługę dużych plików bibliotecznych
Praveen Prasad
źródło
2

Praktycznie pod każdym względem, korzystanie z CDN Google jest dobrą rzeczą.

Wydajność ulegnie poprawie (choć dość marginalnie, chyba że Twoja witryna jest naprawdę zajęta), a ilość danych, które Twoje serwery muszą przesłać, spadnie (chociaż jQuery nie jest zbyt masywna do pobrania) itp.

Jedynym powodem, dla którego nie chciałbyś go używać, jest to, że nie ufasz Google. Korzystając z niej, skutecznie udostępniasz Google dodatkowe okno informacji w profilu ruchu Twojej witryny, w tym znajomość adresów URL, których w innym przypadku nie chciałbyś upubliczniać (np. Zabezpieczone obszary witryny).

Jeśli masz paranoję, jeśli chodzi o bezpieczeństwo, może to wystarczyć, aby przekonać Cię, aby z nich nie korzystać (w końcu samodzielne hosting nie spowolni Twojej witryny do indeksowania), ale ogólnie większość ludzi przyjmuje pragmatyczny pogląd że Google wie już wystarczająco dużo o ich witrynie, że dodanie tego nie zrobi dużej różnicy.

Spudley
źródło
1

Prawdopodobnie jestem obecnie w mniejszości, ale powiedziałbym, że nie chcesz używać CDN, chyba że naprawdę musisz. Kluczowe czynniki, aby zacząć z niego korzystać, to:

  • Użytkownicy z różnych obszarów geograficznych. Jeśli hostujesz swoją witrynę w USA, ale masz widoczną liczbę użytkowników z Europy - CDN skróci czas ładowania.
  • Duża liczba użytkowników i \ lub duża zawartość, więc jeden serwer główny już nie wystarcza. Można pomyśleć o dowolnej witrynie z filmami pornograficznymi (lub Netflix, jeśli chcesz). Strumień wideo jest dużym obciążeniem, przy czym CDN byłby znacznie mniejszy na głównym serwerze.

Ale ... chodzi o to, że te punkty nie mają tak naprawdę zastosowania do 90% witryn internetowych na świecie. Założę się, że nie jesteś Facebookiem z milionami użytkowników online na całym świecie, nie jesteś Pornhubem z setkami GB przesyłanymi co sekundę.

Jeśli Twoja witryna jest skierowana do użytkowników w Twoim mieście / kraju, a pojemność jednego serwera jest wystarczająca dla liczby użytkowników - po co miałbyś chcieć mieć CDN? Użytkownicy w Twoim mieście mogą szybciej i łatwiej pobierasz wszystko z serwera głównego lokalnie.


Chodziło bardziej ogólnie o CDN, teraz pozwól mi być bliżej rzeczywistego pytania o jQuery lub jakąkolwiek inną bibliotekę.

Jeśli chcesz, aby Twoja witryna była dostępna i działała bez konserwacji przez ponad rok, powiedzmy - umieść to lokalnie. Biblioteki są obecnie aktualizowane w szalonym tempie, którego prawdopodobnie nie chcesz śledzić. W końcu stare wersje są usuwane. Co więcej, cała biblioteka może umrzeć (prawdopodobnie nie dotyczy to jQuery).

Z mojego ostatniego doświadczenia - zaktualizowałem TinyMCE na stronie, którą prowadzę z 3.xx (z 2012 r.) Do 5.xx (z wiosny 2019 r.). Ta strona działała przez 7 (siedem!) Lat bez żadnej konserwacji w tej części logiki. Nie było wtedy koncepcji „minimalizacji”, a sieci CDN nie były tak powszechne jak obecnie. Ale nawet jeśli byłyby powszechne - nigdy nie wiadomo, co się stanie za 3-5-10 lat. Zwykle chcesz, aby Twoja witryna żyła nawet bez jej utrzymywania, prawda? Jeśli jednak dzisiaj ściągniesz jQuery z CDN, to ten link może (i prawdopodobnie pęknie) za 5 lat.

Rozwiązanie z CDN ORAZ powrót do wersji lokalnej, jak sugerował @Xaver, może być dobrym kompromisem. Ale ... może po prostu pozbyć się łącza CDN? ;)

Ojciec chrzestny
źródło
0

Dla mnie to naprawdę zależy od tego, ile kontroli chcesz mieć. Jeśli jesteś podobny do mnie i musisz rozwijać się na lokalnym hoście podczas pracy i podróży. Posiadanie lokalnych plików jquery jest lepsze niż umieszczanie ich w Google czy gdzie indziej.

WebGoonie
źródło