web-dev-qa-db-fra.com

Doit-on utiliser Github comme CDN pour les bibliothèques javascript?

Servir des bibliothèques javascript à partir d'un CDN au lieu de votre propre serveur présente des avantages considérables. Moins de travail pour votre serveur, possibilité pour le CDN d'avoir une copie plus proche de l'utilisateur que votre serveur, mais surtout une bonne chance que le navigateur de votre utilisateur l'ait déjà mis en cache à partir de cette URL. Le dernier signifie moins de travail total pour tout le monde, donc c'est clairement une victoire tout autour, et est plus probable que plus nous (développeurs) comptons sur les CDN pour servir notre javascript.

Mais les CDN javascript populaires (Google, Microsoft, autres?) N'hébergent qu'un petit nombre de fichiers. Pour d'autres, nous avons le choix de les héberger nous-mêmes, ou ... d'utiliser le serveur de contrôle de source comme une sorte de CDN. Il est peu probable que Github ou similaire dispose d'un cache de fichiers géographiquement distribué optimisé pour une diffusion mondiale. Mais si c'est une pratique courante, il y a de fortes chances que le navigateur de l'utilisateur le mette en cache. L'argument du déchargement du travail de nos serveurs vers github n'est valable que si Github s'est porté volontaire pour le faire.

Alors, est-ce une pratique courante? Devrions-nous nous encourager mutuellement à le faire? Est-ce que Github vous dérange? Ont-ils une politique officielle énoncée?

92
Leopd

Vous ne devriez pas faire cela pour les fichiers JavaScript si vous vous souciez des performances ou de la compatibilité IE9.

GitHub ne sert pas ses fichiers "bruts" avec un en-tête expirant dans un futur lointain. Sans la possibilité de mise en cache intersite, vous perdez le plus grand avantage d'utiliser un CDN public pour héberger votre JavaScript. En fait, utiliser GitHub comme CDN sera plus lent que de simplement héberger les fichiers sur votre propre serveur après la première demande de fichier de chaque utilisateur (en supposant que vous configuriez correctement la mise en cache sur votre serveur).

Un autre problème est que GitHub ne sert pas les fichiers "bruts" avec un en-tête de type de contenu qui correspond au type MIME réel du fichier. Dans IE9 (et peut-être d'autres navigateurs/proxies/pare-feu/etc), les fichiers JavaScript qui ne sont pas servis avec le type de contenu correct sont bloqués par défaut. Vous pouvez le voir en action sur la page de démonstration de BlockUI, par exemple:

enter image description here

90
Dave Ward

La liaison aux fichiers "bruts" de GitHub a quelques problèmes, comme indiqué par réponse de Dave Ward .

Je vous suggère de regarder dans les pages GitHub en option.

Lisez cet article:
GitHub en tant que CDN. Mettez en cache vos javascripts, feuilles de style et ressources Web avec des pages GitHub.

17
Chris Jacob

C'était récemment demandé dans les forums de support de github , et la réponse officielle était que ça allait.

Cela dit, je suis d'accord avec d'autres réponses: github n'a jamais vraiment signifié pour être un CDN, tandis que Google et Microsoft ont une infrastructure spécifique pour cela.

11
Mauricio Scheffer

C'est bien pour le prototypage/les trucs personnels, mais pour la production, je regarderais:

http://www.cdnjs.com/

http://cachedcommons.org/ -- plus disponible

10
meleyal