O Github deve ser usado como um CDN para bibliotecas javascript? [fechadas]

94

Servir bibliotecas javascript a partir de um CDN em vez de seu próprio servidor traz enormes vantagens. Menos trabalho para seu servidor, possibilidade de o CDN ter uma cópia mais próxima do usuário do que seu servidor, mas o mais importante é uma boa chance de que o navegador do usuário já o tenha armazenado em cache a partir desse URL. O último significa menos trabalho total para todos, então é claramente uma vitória para todos, e é mais provável quanto mais nós (desenvolvedores) dependemos dos CDNs para servir nosso javascript.

Mas os populares CDNs de javascript (Google, Microsoft, outros?) Hospedam apenas um pequeno número de arquivos. Para outros, temos a opção de hospedá-los ou ... usar o servidor de controle de origem como uma espécie de CDN. É improvável que o Github ou similar tenha um cache de arquivos distribuído geograficamente e otimizado para servir globalmente. Mas se for uma prática comum, então há uma boa chance de que o navegador do usuário o tenha armazenado em cache. O argumento de descarregar trabalho de nossos servidores para o github só é válido se o Github voluntariamente se ofereceu para fazer isso.

Então, é uma prática comum? Devemos encorajar uns aos outros a fazer isso? O Github se importa? Eles têm uma política oficial declarada?

Leopd
fonte
5
O que acontece se o autor reorganizar sua estrutura de arquivos? Não é o problema dele em centenas de sites que quebram.
Raynos,
2
@Raynos Se você for o "autor" do repositório GitHub, você controla as alterações.
Chris Jacob
2
@ChrisJacob é esse o ponto. Se eu mudar minha própria estrutura de arquivos, não é meu problema você apontar para um pedaço de código que não existe mais.
Raynos
5
Você pode usar rawgithub.com para compartilhar HTML, JavaScript ou CSS de trabalho em andamento com alguém para uma demonstração rápida ou talvez para usá-lo em um teste jsPerf.
Giovanni Cappellotto
A pergunta deve ser reaberta, pois agora há uma resposta certa no comentário acima de @GiovanniCappellotto.
Supersharp de

Respostas:

93

Você não deve fazer isso para arquivos JavaScript se se preocupa com o desempenho ou a compatibilidade do IE9.

O GitHub não fornece seus arquivos "brutos" com um cabeçalho de expiração de futuro distante. Sem a possibilidade de armazenamento em cache entre sites, você perde o maior benefício de usar um CDN público para hospedar seu JavaScript. Na verdade, usar o GitHub como um CDN será mais lento do que simplesmente hospedar os arquivos em seu próprio servidor após a primeira solicitação de arquivo de cada usuário (supondo que você configure o cache corretamente em seu servidor).

Outro problema é que o GitHub não fornece arquivos "brutos" com um cabeçalho de tipo de conteúdo que corresponda ao tipo MIME real do arquivo. No IE9 (e talvez outros navegadores / proxies / firewalls / etc), os arquivos JavaScript que não são servidos com o tipo de conteúdo correto são bloqueados por padrão. Você pode ver isso em ação na página de demonstração do BlockUI, por exemplo:

insira a descrição da imagem aqui

Dave Ward
fonte
10
Além disso ... "Quando você solicita o arquivo bruto dessa forma, não está acessando diretamente o arquivo do sistema de arquivos! Você também está passando por camadas de código do aplicativo, o que definitivamente deixará seu site mais lento. Não faça isso . Em vez disso, crie um branch gh-pages e carregue-o a partir daí "- viatropos.com/blog/github-as-a-cdn
Chris Jacob
RawGit fornece arquivos raw diretamente do GitHub com cabeçalhos de tipo de conteúdo adequados. Use uma tag específica ou commit de hash na URL (não um branch). Os arquivos são armazenados em cache permanentemente com base no URL. rawgit.com
Kerem Baydoğan
11

Recentemente, isso foi perguntado nos fóruns de suporte do github e a resposta oficial foi que está tudo bem.

Dito isso, concordo com outras respostas: o github nunca foi realmente destinado a ser um CDN, enquanto o Google e a Microsoft têm infraestrutura específica para isso.

Mauricio Scheffer
fonte
7
Esclarecer. Essa resposta do fórum de suporte é em relação ao artigo que vinculei em minha resposta (Páginas do GitHub como CDN - não arquivos "brutos" do GitHub): stackoverflow.com/questions/5502540/… ).
Chris Jacob
10

É bom para prototipagem / coisas pessoais, mas para produção, eu consideraria:

http://www.cdnjs.com/

http://cachedcommons.org/ - não está mais disponível

meleyal
fonte
Espero que você saiba que CachedCommons.com está servindo apenas de github.com
ocodo
Mas os urls parecem apontar para CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , pode ser um proxy, eu acho.
meleyal
Desculpe, o que quero dizer é que as informações antigas sobre como usar o Github como um CDN não se aplicam mais, aparentemente, e está tudo bem. Além de possíveis problemas de disponibilidade no futuro, vale a pena criar uma biblioteca para evitar isso.
ocodo
2
Parece que o link para o Github em breve não será uma opção: github.com/blog/…
meleyal
1
Na verdade, isso não é um problema, se você for usar um recurso baseado no GitHub como um cdn, apenas certifique-se de que ele seja hospedado como parte de um site de páginas estáticas (agora GitHub.io) - É assim que você deveria ter feito no primeiro lugar a propósito.
ocodo
-2

Estou fazendo isso há meses, tive algumas dúvidas primeiro, mas é totalmente legal se você não tiver problemas com seus arquivos sendo disponibilizados publicamente, use versões reduzidas se quiser.

Mas ainda - Google e MS governam o espaço para modelos jQuery e jQuery - então eu os uso para isso.

Ezmilhouse
fonte