Pliki lokalne a CDN

14

Jeśli czas wczytywania witryny jest problemem, który z reguły lepiej jest wykorzystać podczas odwoływania się do pliku JavaScript lub CSS? Czy korzystanie z sieci CDN byłoby lepsze, czy po prostu dodałoby więcej żądań HTTP?

Omar A.
źródło

Odpowiedzi:

12

CDN powinien być używany dla wszystkich plików statycznych (.css / .js / images).

Czasami jednak pliki javascript lub css mogą mieć dynamiczny aspekt, taki jak to, że zawiera unikalny ciąg użytkownika lub coś w tym rodzaju. W tej sytuacji serwer CDN musiałby skontaktować się z serwerem źródłowym przy każdym żądaniu, które zniweczyłoby cel.

Jeśli Twój CSS i JavaScript są statyczne dla wszystkich użytkowników, to użycie CDN jest właściwym sposobem. Nie spowodowałoby to żadnych dodatkowych żądań HTTP, ponieważ ładowałoby tylko pliki css i js z CDN zamiast z własnego serwera WWW (chyba że używasz kodu wbudowanego). Więc zamiast przeglądarki użytkowników ładującej te żądania z twojego serwera, byłyby one ładowane przez CDN, nie ma żadnych dodatkowych żądań, po prostu zmieniasz miejsce wysłania tych żądań (ponownie, o ile obecnie nie używasz kodu wbudowanego).

Innymi korzyściami wynikającymi z korzystania z CDN byłoby to, że serwer CDN najprawdopodobniej byłby zlokalizowany bliżej użytkowników końcowych niż miejsca pochodzenia, co korzystnie wpłynęłoby na czasy ładowania. Serwery CDN są również skonfigurowane tak, aby obsługiwały zawartość statyczną znacznie szybciej niż serwer źródłowy, specjalnie dostosowując serwer WWW do treści statycznych.

Analog
źródło
2
Jeśli CDN nie jest bliżej i nie korzysta z podsieci edns-client-subnet, to wcale nie poprawi wydajności. Nie jest to „inna korzyść”, ponieważ bliższe klientowi, być może zapewnienie ochrony DOS / optymalizacji treści (choć nie wspominasz o nich) to jedyne korzyści.
symcbean
Główną zaletą korzystania z CDN jest fakt, że najprawdopodobniej użytkownik już odwiedził witrynę, która korzystała z tego samego CDN, a przeglądarka już go buforowała, więc gdy użytkownik dotrze do Twojej witryny, przeglądarka nie wyśle ​​żadnego żądania.
Offir Pe'er
3

Preferowane jest używanie CDN w porównaniu z tradycyjnym hostingiem do dostarczania plików statycznych, takich jak CSS, JS i obrazy. Wynika to z faktu, że gdy pliki zostaną buforowane na serwerach brzegowych CDN, odwiedzający witrynę otrzymają treść statyczną z najbliższego punktu obecności (PoP) zamiast z serwera źródłowego.

W większości przypadków skraca to odległość między klientem a serwerem, a tym samym pomaga skrócić czas ładowania bez dodawania dodatkowych żądań HTTP. Pomaga to również w innych obszarach, takich jak zwiększenie redundancji, odciążenie źródła itp.

CodyA
źródło
2

Użyj CDN, jeśli potrzebujesz CDN. Jeśli Twój użytkownik jest globalny i rozciąga się na dużym obszarze lub masz dużo takich treści, których nie chcesz przechowywać na własnym serwerze, wtedy przydatna jest sieć CDN. Globalnie może przyspieszyć dostęp do treści, jeśli serwer jest bliżej użytkownika. Jeśli masz dużo GB lub terabajtów danych statycznych i duże obciążenie dostępu do tej zawartości, CDN może w tym pomóc.

Jednak małe, lokalne lub lekko załadowane witryny rzadko potrzebują takich rzeczy, a CDN może dodać tylko jedną komplikację do konfiguracji, działania i przepływu pracy, na przykład problemy z buforowaniem.

Zbyt często widzę, że ludzie używają CDN, ponieważ czytają, że powinni używać jednego i żadnego innego powodu.

Obrabować
źródło
Dzięki za zwrócenie uwagi, że nie zawsze jest to wymagane i rzeczywiście powoduje niepotrzebne komplikacje. W moim przypadku używam cms opartych na laravel z łącznikiem zasobów zaplecza i buforuje zminimalizowane pliki konfigurujące S3 cdn, gulp i vc na kilku plikach js było stratą czasu. Wolę skupić się na buforowaniu DB i odpowiednim kodzie szybkości
Raja Khoury,
1

Korzystanie z sieci CDN może być zarówno obciążeniem, jak i korzyścią dla strony internetowej, wszystko w zależności od sposobu jej wdrożenia.

Pozytywne punkty

  1. Treść statyczna przechowywana bliżej użytkownika końcowego (krótszy czas ładowania)
  2. Dodatkowe subdomeny ( cdn1.example.com, cdn2.example.comitp.), Pomaga to z nieodłącznym ograniczeniem w przeglądarkach, w których ograniczają one pobieranie plików do dwóch jednoczesnych plików z tej samej w pełni kwalifikowanej nazwy domeny jednocześnie. Innymi słowy, korzystając z tego przykładu, można uzyskać dostęp do HTML z www.example.comi jednocześnie pobierać 2 pliki z cdn1.example.com, 2 pliki z cdn2.example.comi 2 pliki cdn3.example.comze wszystkimi trzema domenami CDN uzyskującymi dostęp do jednej usługi CDN i źródła.
Chris Rutherfurd
źródło
Czy możesz podać odniesienie, z którego pochodzą „2 jednoczesne pliki na domenę”? Z pewnością dotyczy przeglądarki. Wraz z pojawieniem się HTTP / 2 fragmentowanie domen stało się spornym problemem.
Patrick Mevzek
0

Hosting w sieci CDN ma wiele wad:

  1. Prywatność. Za każdym razem, gdy odwiedzasz witrynę, w której znajdują się skrypty / arkusze stylów / czcionki w sieci CDN, CDN wie o Twojej wizycie na stronie.
  2. Czas offline W ostatnich tygodniach cloudflare itp. Miał kilka godzin, w których czas ładowania był bardzo wolny lub nawet offline przez kilka minut. W najlepszym przypadku Twoja witryna wygląda brzydko, kiedy to się dzieje, w najgorszym przypadku jest całkowicie nieużyteczna w czasach, w których konkurenci również mają problemy, a możesz ich zdobyć, jeśli Twoja witryna była online, a ich nie.
  3. Bezpieczeństwo. CDN może zostać naruszony (zdarzyło się to wcześniej). W najlepszym przypadku serwer rozprzestrzenia złośliwe oprogramowanie, w najgorszym przypadku dane są teraz publiczne lub zniknęły.

W porównaniu z tym zalety są nieznaczne:

  1. Mniej danych do załadowania: mówimy o około 100 KB skryptów na stronę. 1 obraz w niskiej jakości odpowiada za więcej. Jeśli nie masz witryny, która jest na granicy, z liczbą odwiedzin wynoszącą 5 000 000 na minutę, nie będzie to miało znaczenia. A jeśli prawdopodobnie powinieneś skonfigurować lepsze środowisko serwera z modułem równoważenia obciążenia i większą liczbą serwerów WWW, ponieważ korzystanie z sieci CDN nie rozwiąże twoich problemów.
  2. Szybsze ładowanie, ponieważ serwery CDN są bliżej klienta: w czasach, gdy opóźnienie z UE do USA wynosi około 100 ms dla prawie wszystkich połączeń, css jest ładowany w 50 ms lub 100 ms.

Istnieje zerowy powód używania CDN w środowisku produkcyjnym.

cari
źródło