Czy Github powinien być używany jako CDN dla bibliotek javascript? [Zamknięte]

95

Udostępnianie bibliotek javascript z sieci CDN zamiast z własnego serwera ma ogromne zalety. Mniej pracy dla twojego serwera, możliwość, że CDN ma kopię bliżej użytkownika niż twój serwer, ale co najważniejsze, duża szansa, że ​​przeglądarka użytkownika już ma ją w pamięci podręcznej z tego adresu URL. Ta ostatnia oznacza mniej pracy dla wszystkich, więc jest to oczywista korzyść dla wszystkich i jest bardziej prawdopodobne, im częściej my (programiści) polegamy na sieciach CDN, które obsługują nasz javascript.

Ale popularne sieci CDN javascript (Google, Microsoft, inne?) Obsługują tylko niewielką liczbę plików. Dla innych mamy do wyboru hostowanie ich samodzielnie lub ... używanie serwera kontroli źródła jako swego rodzaju CDN. Jest mało prawdopodobne, że Github lub podobny ma geograficznie rozproszoną pamięć podręczną plików zoptymalizowaną pod kątem globalnego udostępniania. Ale jeśli jest to powszechna praktyka, istnieje spora szansa, że ​​przeglądarka użytkownika będzie ją buforować. Argument przeniesienia pracy z naszych serwerów na github jest ważny tylko wtedy, gdy Github dobrowolnie zgłosił się do tego.

Czy jest to więc powszechna praktyka? Czy powinniśmy się do tego zachęcać? Czy Github ma coś przeciwko? Czy mają określone oficjalne zasady?

Leopd
źródło
5
Co się stanie, jeśli autor zmieni strukturę swoich plików? To nie jest jego kod błędu na setkach stron internetowych.
Raynos
2
@Raynos Jeśli jesteś „autorem” repozytorium GitHub, kontrolujesz zmiany.
Chris Jacob
2
@ChrisJacob o to chodzi. Jeśli zmienię własną strukturę plików, to nie mój problem, wskazując na fragment kodu, który już nie istnieje.
Raynos
5
Możesz użyć rawgithub.com, aby udostępnić komuś kod HTML, JavaScript lub CSS w toku w celu uzyskania szybkiej demonstracji, a może użyć go w teście jsPerf.
Giovanni Cappellotto
Pytanie powinno zostać ponownie otwarte, ponieważ w powyższym komentarzu @GiovanniCappellotto jest teraz prawidłowa odpowiedź.
Supersharp

Odpowiedzi:

94

Nie należy tego robić w przypadku plików JavaScript, jeśli zależy Ci na wydajności lub zgodności z IE9.

GitHub nie obsługuje swoich „surowych” plików z nagłówkiem wygasającym w dalekiej przyszłości. Bez możliwości buforowania między witrynami tracisz największą korzyść z używania publicznej sieci CDN do hostowania JavaScript. W rzeczywistości używanie GitHub jako CDN będzie wolniejsze niż po prostu hostowanie plików na własnym serwerze po pierwszym żądaniu pliku przez każdego użytkownika (zakładając, że poprawnie skonfigurujesz buforowanie na serwerze).

Innym problemem jest to, że GitHub nie obsługuje "surowych" plików z nagłówkiem typu zawartości, który pasuje do rzeczywistego typu MIME pliku. W IE9 (i być może w innych przeglądarkach / serwerach proxy / zaporach ogniowych / itp.) Pliki JavaScript, które nie są obsługiwane z odpowiednim typem zawartości, są domyślnie blokowane. Możesz to zobaczyć w akcji na stronie demonstracyjnej BlockUI, na przykład:

wprowadź opis obrazu tutaj

Dave Ward
źródło
10
Poza tym ... „Kiedy żądasz pliku raw w ten sposób, nie uzyskujesz bezpośredniego dostępu do pliku z systemu plików! Przechodzisz również przez warstwy kodu aplikacji, co z pewnością spowolni Twoją witrynę. Nie rób tego . Zamiast tego utwórz gałąź gh-pages i załaduj ją stamtąd ”- viatropos.com/blog/github-as-a-cdn
Chris Jacob
RawGit obsługuje pliki RAW bezpośrednio z GitHub z odpowiednimi nagłówkami Content-Type. Użyj określonego tagu lub skrótu zatwierdzenia w adresie URL (nie gałęzi). Pliki są trwale buforowane na podstawie adresu URL. rawgit.com
Kerem Baydoğan
11

Pytano o to niedawno na forach pomocy technicznej github , a oficjalna odpowiedź brzmiała, że ​​wszystko jest w porządku.

Powiedziawszy to, zgadzam się z innymi odpowiedziami: github nigdy tak naprawdę nie miał być CDN, podczas gdy Google i Microsoft mają do tego specjalną infrastrukturę.

Mauricio Scheffer
źródło
7
W celu wyjaśnienia. Ta odpowiedź na forum pomocy jest związana z artykułem, do którego umieściłem link w mojej odpowiedzi (strony GitHub jako CDN - a nie „surowe” pliki GitHub): stackoverflow.com/questions/5502540/ ... ).
Chris Jacob
10

Jest dobry do prototypowania / rzeczy osobistych, ale do produkcji przyjrzałbym się:

http://www.cdnjs.com/

http://cachedcommons.org/ - już niedostępny

meleyal
źródło
Mam nadzieję, że wiesz, że CachedCommons.com obsługuje tylko z github.com
ocodo
Ale adresy URL wydają się wskazywać na CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , myślę , że może to być serwer proxy.
meleyal
Przepraszam, chodzi mi o to, że stare informacje o używaniu Githuba jako CDN najwyraźniej już nie mają zastosowania i wszystko jest w porządku. Oprócz możliwych problemów z dostępnością w przyszłości, warto stworzyć bibliotekę, aby tego uniknąć.
ocodo
2
Wygląda na to, że link do Github wkrótce nie będzie możliwy
meleyal
1
Właściwie to nie jest problem, jeśli zamierzasz używać zasobu opartego na GitHub jako cdn, po prostu upewnij się, że jest on hostowany jako część witryny ze stronami statycznymi (teraz GitHub.io) - Tak powinieneś to robić w przy okazji pierwsze miejsce.
ocodo
-2

Robię to od miesięcy, najpierw miałem pewne obawy, ale jest super, jeśli nie masz problemów z publicznymi dostępnymi plikami, użyj zminimalizowanych wersji, jeśli ci zależy.

Ale nadal - Google i MS rządzą przestrzenią dla szablonów jQuery i jQuery - więc używam ich do tego.

ezmilhouse
źródło