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ć?
javascript
jquery
jquery-ui
cdn
orolo
źródło
źródło
Odpowiedzi:
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
źródło
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>
źródło
!window.jQuery...
)?<script>
tagi są przetwarzane asynchronicznie, prawda?<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.write
Nigdy nie zostanie wykonane, jeśli już istnieje jQuery.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).
źródło
Google CDN:
Lokalnie:
źródło
if a new version breaks your existing plugins or site, you'll know about it possibly too late
możesz określić wersję w linku CDN, aby tego uniknąć.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.
źródło
Korzyści: (specjalnie dla CDN Google)
źródło
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.
źródło
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:
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? ;)
źródło
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.
źródło