Чи слід використовувати Github як CDN для бібліотек javascript? [зачинено]


94

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

Але популярні CDN-адреси для JavaScript (Google, Microsoft та інші?) Містять лише невелику кількість файлів. Для інших ми маємо можливість самостійно їх розмістити, або ... з використанням вихідного сервера управління як свого роду CDN. Навряд чи у Github або подібних є географічно розподілений кеш файлів, оптимізований для глобального обслуговування. Але якщо це звичайна практика, то є пристойна ймовірність того, що браузер користувача буде кешувати її. Аргумент розвантаження роботи з наших серверів на github є дійсним лише в тому випадку, якщо Github добровільно зголосився це зробити.

Отже, це звичайна практика? Чи слід заохочувати один одного робити це? Чи проти Github? Чи є у них офіційна політика?


5
Що станеться, якщо автор змінить структуру файлу? Це не його код проблеми на сотнях веб-сайтів.
Райнос,

2
@Raynos Якщо ви є "автором" репозиторію GitHub, тоді ви контролюєте зміни.
Chris Jacob

2
@ChrisJacob в цьому суть. Якщо я зміню власну структуру файлів, це не моя проблема, якщо ви вкажете на фрагмент коду, який більше не існує.
Райнос,

5
Ви можете використовувати rawgithub.com, щоб поділитися незавершеним HTML, JavaScript або CSS з кимось для швидкої демонстрації або, можливо, використовувати його в тесті jsPerf.
Джованні Каппеллотто

Питання слід відкрити знову, оскільки тепер у наведеному коментарі від @GiovanniCappellotto є правильна відповідь.
Supersharp

Відповіді:


93

Ви не повинні робити цього для файлів JavaScript, якщо вам важлива продуктивність або сумісність з IE9.

GitHub не обслуговує свої "необроблені" файли із заголовком, що закінчується в майбутньому. Без можливості кешування між сайтами ви втрачаєте найбільшу перевагу використання загальнодоступного CDN для розміщення вашого JavaScript. Насправді використання GitHub як CDN буде повільнішим, ніж просто розміщення файлів на вашому власному сервері після першого запиту користувача на файл (за умови, що ви правильно налаштували кешування на своєму сервері).

Інша проблема полягає в тому, що GitHub не обслуговує "необроблені" файли із заголовком типу вмісту, який відповідає фактичному типу файлу MIME. У IE9 (і, можливо, інших браузерах / проксі / брандмауерах / тощо), файли JavaScript, які не обслуговуються з правильним типом вмісту, за замовчуванням блокуються. Ви можете побачити це в дії на демонстраційній сторінці BlockUI, наприклад:

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


10
Також ... "Коли ви запитуєте такий необроблений файл, ви не отримуєте безпосереднього доступу до файлу з файлової системи! Ви також проходите шари коду програми, що, безумовно, сповільнить ваш сайт. Не робіть цього Натомість створіть гілку gh-сторінок і завантажте її звідти "- viatropos.com/blog/github-as-a-cdn
Кріс Джейкоб,

RawGit обслуговує необроблені файли безпосередньо з GitHub з відповідними заголовками Content-Type. Використовуйте певний тег або хеш коміту в URL-адресі (не гілку). Файли кешуються постійно на основі URL-адреси. rawgit.com
Керем Байдоган

17

Посилання на "необроблені" файли GitHub має деякі проблеми, як зазначено у відповіді Дейва Уорда .

Я пропоную вам розглянути Сторінки GitHub як варіант.

Прочитайте цю статтю:
GitHub як CDN. Кешуйте свої Javascripts, таблиці стилів та веб-ресурси за допомогою сторінок GitHub.


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
окдо

Але, здається, адреси вказують на CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , я думаю, це може бути проксі.
meleyal

На жаль, маю на увазі стару інформацію про використання Github як CDN, мабуть, більше не застосовується, і це все добре. Окрім можливих проблем із доступністю в майбутньому, варто уникнути бібліотеки, щоб уникнути цього.
ocodo

2
Схоже, посилання на Github незабаром не буде можливим: github.com/blog/…
meleyal

1
Насправді це не проблема, якщо ви збираєтесь використовувати ресурс, заснований на GitHub, як cdn, просто переконайтеся, що він розміщений як частина сайту із статичними сторінками (тепер GitHub.io) - саме так вам слід було це робити в перше місце до речі.
ocodo

-2

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

Але все ж - Google і MS керують простором для шаблонів jQuery & jQuery - тому я використовую їх для цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.