Biblioteka hostowana przez Google jQuery - czy jest dobra?

14

Czy jest jakaś PRAWDZIWA dotykalna korzyść z używania biblioteki Google jQuery? A może po prostu pobierzmy go na nasz serwer?

Jakie są twoje opinie na ten temat?

Lew
źródło
1
Prosta wyszukiwarka google dała odpowiedź ...
Francisco Presencia

Odpowiedzi:

18

Istnieją dwie główne zalety korzystania z zewnętrznego CDN, takiego jak Google, do obsługi jQuery:

  1. Jest szybsze. Na pewno będzie szybszy niż Twoja strona i prawdopodobnie szybszy niż jakikolwiek CDN, który sam skonfigurujesz.
  2. Może być już buforowany . Wiele witryn odwołuje się również do jQuery w sieci CDN Google, więc jeśli odwiedzili inną witrynę z nią wcześniej, nie będą nawet musieli jej pobierać.

Potencjalne wady:

  1. Domeny może być zablokowany (jest to dość powszechne w miejscach takich jak Chiny). Możesz rozwiązać ten problem, mając lokalną rezerwę ( zobacz tutaj, jak to zrobić ).
  2. Fragmentacja numerów wersji jest dość wysoka, więc użytkownicy witryny mogą mieć wiele różnych wersji w pamięci podręcznej, ale nie ten, który odwołuje ( patrz tutaj dla niektórych ostatnich statystykach ). Jest to jednak tylko problem przy ładowaniu pierwszej strony.
DisgruntledGoat
źródło
3
Czy możesz opublikować referencję dotyczącą konfigurowania lokalnej rezerwy awaryjnej?
Stephen Ostermiller
1
Jak podkreśla Zistolen, kolejną korzyścią jest to, że będzie pobierał równolegle do twoich stron internetowych inne zasoby. Możesz to dodać również do tej świetnej odpowiedzi.
nathangiesbrecht
To trochę mylące. Przeglądarki pobierają zasoby równolegle, niezależnie od tego, gdzie są hostowane, ale istnieje ograniczenie liczby rzeczy, które będą pobierać z tego samego hosta jednocześnie.
Tim Fountain
Pominąłem to, szczerze mówiąc, nie ma go ani tu, ani tam - plik można pobrać równolegle, ale jest to również dodatkowe wyszukiwanie DNS. Co więcej, jakakolwiek różnica w czasie którejkolwiek z tych marek jest znikoma.
DisgruntledGoat
Słusznie. Ale czy przy szybkich połączeniach nie może to skutkować szybszym całkowitym czasem ładowania, ponieważ można zastosować więcej „rury”?
nathangiesbrecht
11

Kolejny minus:

Korzystanie z CDN umożliwia operatorowi CDN śledzenie odwiedzających witryny. Dlatego nie kosztują pieniędzy.

Jost
źródło
Śledzenie jest pewne, ale nie odwiedzających: zarówno własna jquery, jak i jQuery google CDN są hostowane w domenach, które nie ustawiają ani nie używają plików cookie (prawdopodobnie jest to również optymalizacja wydajności), i nie ma tak naprawdę możliwych do zidentyfikowania informacji w żądaniu. Dostawca CDN może uzyskać informacje na temat adresów IP i niektórych statystyk dotyczących ciągów agentów użytkownika i stron odsyłających. Jest to prawdopodobnie cenne, ale samo w sobie nie stanowi dużego zagrożenia dla prywatności (jeśli te rekordy byłyby skorelowane z inną bazą danych - powiedzmy spersonalizowane reklamy wyświetlane w podobnych momentach - to być może mógłby to być sposób śledzenia).
Eamon Nerbonne
Myślę, że można przyjąć za pewnik (w przypadku Google), że dane są skorelowane z innymi bazami danych, ponieważ prawie wszyscy używają google do wyszukiwania przez cały czas. To samo dotyczy czcionek Google: ostatnio próbowałem hostować czcionki na serwerze, ale odkryłem, że bardzo trudno to zrobić. Google nie zabrania tego (Open Source), ale nie udostępnia plików w sposób gotowy do użycia: Możesz je samodzielnie skompilować (ale nie ma pliku makefile) lub możesz sfałszować żądania do serwery używane do normalnego ich dostarczania. Oba nie są wykonalne dla osób bez technologii.
Jost
Być może. Nie mam żadnych informacji wewnętrznych, więc trudno powiedzieć na pewno. Jestem pewien, że będzie wadliwy i będzie miał znaczne luki: jednak większość miejsc, w których korzystam z Internetu, mają NAT, a kilku ma całkiem sporo użytkowników z podobnymi maszynami (prawdopodobnie identycznymi ciągami UA) - nie byłoby możliwe ustalenie, które prośba pochodzi od kogo. I oczywiście, co z przyciskami AdSense i udostępniania społecznościowego, mogą one mieć bardziej niezawodne środki prawie zawsze, więc mogę sobie wyobrazić, że nie przeszkadzają. Jeśli chodzi o czcionki - pobrałem je kilka razy, więc nie do końca rozumiem, co masz na myśli mówiąc, że to trudne?
Eamon Nerbonne
Żeby było jasne: zakładam, że większość odwiedzanych witryn może i będzie śledzona przez dużych kolekcjonerów statystyk dzięki przyciskom udostępniania społecznościowego (dość rozpowszechnionym) i reklamom, które są prawie wszędzie. Zastanawiam się więc, jak cenne są potencjalnie wprowadzające w błąd informacje pochodzące z mocno zbuforowanych żądań js - Założę się, niezbyt, dlatego zakładam, że nie zawracają sobie głowy próbą osobistej identyfikacji osób korzystających z JS obsługiwanej przez CDN.
Eamon Nerbonne
To nie jest tak buforowane, jak mogłoby się wydawać - Podczas osadzania czcionek w sposób preferowany przez Google, wstawiając link CSS do fonts.googleapis.com, każde pojedyncze wyświetlenie strony otwiera połączenie z Google (możesz zobaczyć je w Firebug). Nie ma znaczenia, czy w pamięci podręcznej, czy nie. Jeśli chodzi o pobieranie: czy możesz wskazać mi miejsce, w którym mogę pobrać czcionki w wysokiej jakości formacie eot, woff, ttf i svg (te same wersje, które dostarcza Google, bez zewnętrznych konwerterów)?
Jost
3

Używanie CDN (ów) do dzielenia zależności na wielu serwerach w ten sposób w istocie stanowi kompromis między przepustowością a opóźnieniem, zakładając, że zależy Ci tylko na wydajności.

Nawiasem mówiąc, zakładam, że alternatywą nie jest po prostu hosting lokalny, ale konkatenacja z innym żądaniem lokalnym - zazwyczaj nie ma dobrego powodu, aby nie łączyć konkatenacji, kiedy możesz.

Jeśli przepustowość jest nieskończona, najlepiej NIE ODKŁADAĆ, ponieważ będziesz tak wolny jak najwolniejsza usługa - ponieważ opóźnienia nie są doskonale przewidywalne, z wystarczającą liczbą usług, nawet jeśli są one szybkie, potrzebujesz tylko trochę pecha, aby spowodować powolne ładowanie strony.

Jeśli opóźnienie wynosi 0, to rozłożenie obciążenia na wiele serwerów może poprawić przepustowość poprzez wykorzystanie wielu serwerów (nie jest to pomocne, ponieważ prawdopodobnie ograniczenia przepustowości znajdują się w pobliżu klientów, a nie serwerów), ale co ważniejsze, może zmniejszyć ilość przesyłanych danych nieznacznie poprzez zwiększenie skuteczności buforowania.

Zależy to od twojego scenariusza, ale generalnie spodziewam się, że opóźnienie będzie bardziej problemem niż przepustowością, chyba że twoje skrypty są niesamowicie duże (co jquery nie jest). W tym momencie zwykle szybsze jest hostowanie jquery jako części połączonego pliku lokalnego.

Powody, dla których nie można hostować lokalnie, to np. Gdy płacisz za przepustowość lub hostujesz na wolnym serwerze (twoje połączenie z klientem jest wąskie po twojej stronie, a nie klienta), lub wiesz, że Twoi klienci będą mieli naprawdę niską przepustowość (low-end dsl lub modemy, powiedzmy - telefon komórkowy ma zwykle więcej problemów z opóźnieniami niż problemy z przepustowością), lub twoi klienci płacą za przepustowość (np. mobilną), a skrypty są tak zauważalną częścią tego, że niewielkie buforowanie wygrywa (nie jest prawdopodobne ).

W każdym razie: o wiele bardziej istotne będzie to, czy najpierw omówiłeś podstawy; odpowiednie buforowanie nagłówków, konkatenacja, minimalizacja i gzipping (najlepiej o wysokim stopniu kompresji). A oto sedno: jeśli tego nie zrobisz, przynajmniej CDN zrobi to, więc to wygrywa ...

TL; DR: Jeśli masz konkatenację + minimalizację + gzipping + buforowanie wszystkich programów, lokalna obsługa małych skryptów jest szybsza niż z CDN, pomimo lepszej wydajności CDN - ale tylko wtedy, gdy odrobiłeś pracę domową, być może nie na pierwszej stronie obciążenia, a są zdecydowanie wyjątki od tej reguły.

Eamon Nerbonne
źródło
Nawiasem mówiąc, niektóre wygrane bajtami zostały wygrane przy użyciu tylko jednego żądania: same nagłówki wynoszą prawie 1kb, co przy ładunku 28k nie jest niczym. gzip działa lepiej z większym kontekstem, co oszczędza kolejne 0,5 tys. Narzuty TCP, DNS, HTTPS mogą łatwo dodać KB tu i tam, a co gorsza, RTT. Dlatego w przypadku takich małych plików CDN nie jest tak szybki, jak mogłoby się wydawać.
Eamon Nerbonne
1

Korzystanie z biblioteki hostowanej przez jQuery przez Google pozwala na szybsze ładowanie strony. Rzeczywiście, biblioteka jest ładowana w tym samym czasie na stronie, a nie później.

Zistoloen
źródło
Ale jak to wpływa na ładowanie strony?
Leo
1
Biblioteki lokalne są również ładowane podczas ładowania strony - w obu przypadkach pobieranie zasobu rozpoczyna się, gdy (nowoczesna) przeglądarka zobaczy fragment kodu, który uruchamia pobieranie, co zwykle dzieje się przed pobraniem całego dokumentu. Zobacz przykładowy zrzut ekranu Firebug
Jost