Следует ли использовать Github в качестве CDN для библиотек javascript? [закрыто]

95

Обслуживание библиотек javascript из CDN вместо вашего собственного сервера дает огромные преимущества. Меньше работы для вашего сервера, возможность для CDN иметь копию ближе к пользователю, чем к вашему серверу, но, что наиболее важно, есть хороший шанс, что браузер вашего пользователя уже кэширует ее с этого URL-адреса. Последний означает меньше общей работы для всех, так что это явно выигрыш со всех сторон, и тем более вероятно, что чем чаще мы (разработчики) полагаемся на CDN для обслуживания нашего javascript.

Но популярные CDN с javascript (Google, Microsoft и другие?) Содержат только небольшое количество файлов. Для других у нас есть выбор: разместить их самостоятельно или ... использовать сервер управления версиями как своего рода CDN. Маловероятно, что Github или аналогичный имеет географически распределенный кеш файлов, оптимизированный для глобального обслуживания. Но если это обычная практика, то есть большая вероятность, что браузер пользователя будет кэшировать его. Аргумент о переносе работы с наших серверов на github действителен только в том случае, если Github добровольно вызвался это сделать.

Итак, это обычная практика? Следует ли нам поощрять друг друга к этому? Гитхаб возражает? У них есть официальная политика?

Леопд
источник
5
Что произойдет, если автор изменит структуру файлов? Это не его проблема, код на сотнях сайтов ломается.
Raynos
2
@Raynos Если вы являетесь «автором» репозитория GitHub, то вы контролируете изменения.
Крис Джейкоб
2
@ChrisJacob, вот в чем дело. Если я изменю свою собственную файловую структуру, это не моя проблема, если вы укажете на кусок кода, которого больше не существует.
Raynos
5
Вы можете использовать rawgithub.com, чтобы поделиться незавершенным HTML, JavaScript или CSS с кем-нибудь для быстрой демонстрации или, возможно, использовать его в тесте jsPerf.
Джованни Каппеллотто
Вопрос следует снова открыть, поскольку теперь в приведенном выше комментарии от @GiovanniCappellotto есть правильный ответ.
Supersharp

Ответы:

94

Вы не должны делать этого для файлов JavaScript, если вас волнует производительность или совместимость с IE9.

GitHub не обслуживает свои «сырые» файлы с заголовком с истечением срока действия в далеком будущем. Без возможности межсайтового кеширования вы теряете самое большое преимущество использования общедоступного CDN для размещения вашего JavaScript. Фактически, использование GitHub в качестве CDN будет медленнее, чем просто размещение файлов на вашем собственном сервере после первого запроса файла каждым пользователем (при условии, что вы правильно настроили кеширование на своем сервере).

Другая проблема заключается в том, что GitHub не обслуживает «сырые» файлы с заголовком типа содержимого, который соответствует фактическому типу MIME файла. В IE9 (и, возможно, в других браузерах / прокси / брандмауэрах и т. Д.) Файлы JavaScript, которые не обслуживаются с правильным типом содержимого, по умолчанию блокируются. Вы можете увидеть это в действии на демонстрационной странице BlockUI, например:

введите описание изображения здесь

Дэйв Уорд
источник
10
Также ... "Когда вы запрашиваете такой необработанный файл, вы не получаете прямой доступ к файлу из файловой системы! Вы также проходите через уровни кода приложения, что определенно замедлит работу вашего сайта. Не делайте этого . Вместо этого создайте ветку gh-pages и загрузите ее оттуда »- viatropos.com/blog/github-as-a-cdn
Крис Джейкоб
RawGit обслуживает необработанные файлы прямо из GitHub с соответствующими заголовками Content-Type. Используйте определенный тег или хеш фиксации в URL-адресе (а не в ветке). Файлы кэшируются постоянно на основе URL-адреса. rawgit.com
Керем Байдоган
11

Это было недавно задавала в форумах поддержки GitHub в , и официальный ответ, что это нормально.

Сказав это, я согласен с другими ответами: github никогда не задумывался как CDN, в то время как у Google и Microsoft есть для этого особая инфраструктура.

Маурисио Шеффер
источник
7
Чтобы уточнить. Этот ответ форума поддержки относится к статье, на которую я указал в своем ответе (страницы GitHub как CDN, а не «сырые» файлы GitHub): stackoverflow.com/questions/5502540/… ).
Крис Джейкоб
10

Это нормально для прототипов / личных вещей, но для производства я бы посмотрел на:

http://www.cdnjs.com/

http://cachedcommons.org/ - больше не доступен

мелея
источник
Надеюсь, вы знаете, что CachedCommons.com только что работает с github.com
ocodo
Но URL-адреса, похоже, указывают на CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , я думаю, это может быть прокси.
meleyal 08
Извините, я имею в виду, что старая информация об использовании Github в качестве CDN, по-видимому, больше не применяется, и все это хорошо. Помимо возможных проблем с доступностью в будущем, чтобы избежать этого, стоит разветвить библиотеку.
ocodo 09
2
Похоже, что ссылка на Github скоро будет недоступна: github.com/blog/…
meleyal
1
На самом деле это не проблема, если вы собираетесь использовать ресурс на основе GitHub в качестве cdn, просто убедитесь, что он размещен как часть сайта со статическими страницами (теперь GitHub.io). Вот как вы должны были делать это в кстати первое место.
ocodo
-2

Я занимаюсь этим уже несколько месяцев, сначала у меня были некоторые опасения, но это совершенно круто, если у вас нет проблем с общедоступностью ваших файлов, используйте уменьшенные версии, если вам интересно.

Но все же - Google и MS управляют пространством для шаблонов jQuery и jQuery, поэтому я использую их для этого.

Ezmilhouse
источник