Jsdelivr net что это: jsDelivr – передовая, открытая и общедоступная CDN / Хабр

Содержание

jsDelivr – передовая, открытая и общедоступная CDN / Хабр

Как разработчик, вы возможно в курсе о Google Hosted Libraries. Google предоставляет простой и быстрый способ, как включить в ваши веб-сайты 12 самых популярных JavaScript-библиотек.

Но что, если вы – вебмастер и хотите использовать преимущество быстрых CDN при использовании в других менее популярных проектах? Или же вы – разработчик и хотите сделать ваш проект более удобным в использовании и более доступным другим пользователям.

Здесь в игру вступает jsDelivr. jsDelivr – это бесплатная и свободная CDN, созданная для того, чтобы помочь разработчикам и вебмастерам. В ней нет ограничений по популярности и разрешены все типы файлов, включая библиотеки JavaScript, плагины jQuery, CSS-фрэймворки, шрифты и многое другое.

Добавление библиотеки


Чтобы добавить новую библиотеку или обновить существующую, все что должен сделать разработчик – это клонировать наш Github-репозиторий и применить те модификации, которые он считает нужным. Когда модератор просматривает Pull-запрос и сливает его с основной веткой, файлы сразу же становятся доступны на официальном веб-сайте.

Если модератор в онлайне, одобрение займет не более 20 минут, в противном случае оно может занять до 10 часов, пока кто-то не появится в онлайне. Однако, как только наше приложение автообновления будет готово, время рассмотрения снизится.

Надежность


Что же в действительности делает проект передовым? Идеей jsDelivr было не создание еще одной CDN, а предоставление очень быстрой и надежной инфраструктуры, которую разработчики и вебмастеры могут использовать, доверяя ей. Любой веб-сайт, будь то большой или маленький, может использовать ее, не беспокоясь. Наш сервис крайне надежен и не имеет ограничений на ширину канала.

Большое время отклика, таймауты и отсутствие сервиса – невыносимы, поэтому мы спроектировали уникальную систему для преодоления этих проблем, и предлагаем продукт, которому могут позавидовать даже CDN enterprise-уровня. Наши наивысшие приоритеты – это время непрерывной работы и производительность. Мы непрерывно все мониторим и всегда находимся в поиске новых технологий и провайдеров, которые могли бы в перспективе улучшить нашу CDN.

Инфраструктура

В отличие от конкурентов, jsDelivr использует уникальную инфраструктуру Multi-CDN, чтобы обеспечить максимально возможные производительность и время непрерывной работы. Ее главная магистральная сеть построена поверх CDN-сетей, предоставляемых MaxCDN и CloudFlare.

Мы также используем специализированные выделенные серверы там, где CDN-сети имеют небольшое представительство, или где их нет совсем. Всего на данный момент это выливается в 42 точки присутствия по всему миру. В будущем мы планируем увеличить число мест размещения, чтобы обеспечить высокую производительность даже в менее популярных странах.

Конечно, множество точек присутствия еще ничего не значит, если вы не можете правильно балансировать нагрузку между ними. Для системы балансировки нагрузки мы используем сервисы, предоставляемые Cedexis. Одной из их главных особенностей является то, что они собирают данные о производительности в реальном времени со всех главных CDN-провайдеров. Каждый день обрабатываются и становятся доступны всем пользователям Cedexis до 1,3 млрд. RUM-тестов производительности (RUM – Real User Monitoring/Measurements — измерения, проводимые при посещении сайтов реальными пользователями, а не роботами).

Измерение производительности


Для сбора данных этих RUM-тестов они развернули специализированный JavaScript-код на тысячах веб-сайтов. Каждый посетитель любого из этих веб-сайтов инициирует выполнение данного кода, и в то время, когда он просматривает веб-сайт, в бэкграунде начинается тестирование различных CDN-провайдеров. Тестирование не влияет на ощущения от серфинга и полностью прозрачно для пользователя. Вы можете увидеть, как это работает, посетив наш веб-сайт, открыв панель разработчика (F12) и перейдя на вкладку «Сеть».

Эти тесты прекрасны тем, что они не синтетические. Они отображают реальную производительность, которую получат реальные пользователи, если они решат скачать файл по одной из этих CDN-сетей.

Подлежит сохранению следующая информация:

  • метрики производительности для каждого из провайдеров
  • метрики доступности для каждого из провайдеров
  • Информация о браузере
  • Первые три октета IP-адреса пользователя


Теперь у нас есть вся информация, которую мы можем использовать в алгоритме “умной” балансировки нагрузки.

Каждый пользователь получает уникальный ответ, основанный на его местоположении и том, каким Интернет-провайдером он пользуется. Каждый раз, когда пользователь решает загрузить файл через jsDelivr, наш алгоритм берет данные о доступности и производительности за последние несколько минут, и затем находит самого оптимального в этот момент провайдера для данного пользователя. И все это в течение нескольких миллисекунд.

В первую очередь, он убеждается, что все провайдеры доступны. Для этого он использует RUM-метрики доступности и синтетический тест, который ежеминутно проверяет каждого провайдера на работоспособность. Далее провайдеры ранжируются по производительности относительно Интернет-провайдера для данного пользователя и его местоположения.

Как только находится самый быстрый провайдер, его имя возвращается пользователю. Например, 2 пользователя разных Интернет-провайдеров Лондона могут получить 2 разных ответа, потому что их Интернет-провайдеры имеют разные маршруты и разную производительность относительно CDN-провайдеров. Эта интеллектуальная система гарантирует максимальный аптайм и высокую скорость закачки для всех пользователей. Если провайдер станет недоступен, jsDelivr не ощутит никаких проблем и незамедлительно начнет использовать другого провайдера.

Этот алгоритм также моментально реагирует на ухудшение производительности. Например, если CDN-провайдер DDoS-ится в Европе и его время отклика увеличивается, jsDelivr заметит проблему и просто прекратит использование этого провайдера в Европе, но по-прежнему будет учитывать его для пользователей из США и других мест, которые не подвержены атаке.

Не полагайтесь в надежности работы и скорости на одну единственную CDN. Все может выйти из строя, но шансы того, что одновременно лягут две CDN и множество серверов, очень малы. Вот почему jsDelivr – это самое оптимальное решение для любого веб-сайта. И не важно, насколько он большой.

Должен также напомнить, что MaxCDN, CloudFlare, Cedexis и другие компании поддерживают jsDelivr бесплатно. Приятно видеть, что существуют организации, которые способны помогать open source проектам и строить быстрый и свободный Интернет.

Расширенные особенности


jsDelivr также поддерживает некоторые интересные и очень полезные особенности, такие как:

Aliasing версий


Вместо того, чтобы использовать уникальный URL для каждой версии, чтобы загрузить проект, с jsDelivr вы можете использовать псевдонимы. Возьмем к примеру, проект Abaaso. На данный момент последняя версия – 3.10.50, и вы можете загрузить его, как обычно, указав точную версию в своем URL. Но так как этот проект обновляется очень часто, вскоре ваша используемая версия устареет. Чтобы преодолеть эту проблему, теперь можно просто использовать следующий URL:

 //cdn.jsDelivr.net/abaaso/3.10/abaaso.min.js


Используя 3.10, вы указываете jsDelivr загрузить последнюю версию проекта из ветки 3.10, которой в данном случае является 3.10.50. Это оптимальное решение для большинства авторов, поскольку они могут загрузить последнюю вспомогательную версию, не беспокоясь о крупных изменениях, которые могли бы нарушить работоспособность их веб-сайта.

Конечно, можно загрузить последнюю версию ветки v3, используя следующий URL:

 //cdn.jsDelivr.net/abaaso/3/abaaso.min.js


И если по какой-то причине вам всегда нужно загружать последнюю доступную версию, вы можете использовать:

 //cdn.jsDelivr.net/abaaso/latest/abaaso.min.js


Используя “latest”, вы говорите серверу загрузить самую свежую версию, которая у него есть. Конечно, это опасно, и рано или поздно может вывести из строя ваш сайт. Так что используйте эту функцию с осторожностью.

Загрузка нескольких файлов за один HTTP-запрос


jsDelivr – первая CDN для поддержки такого рода функциональности. Вы можете загрузить несколько файлов с помощью одного HTTP-запроса. Подобно объединению и сжатию JavaScript-файлов на вашем собственном сервере, только на этот раз — в кэше огромной и умной сети jsDelivr.

Все, что вам нужно сделать – это создать собственный URL с проектами и файлами, которые вы хотите объединить, и их версиями, если необходимо. Например, чтобы загрузить последнюю версию проектов abaaso, ace и alloyui вы используете следующий синтаксис:

 //cdn.jsDelivr.net/g/abaaso,ace,alloyui 


Имейте в виду, что загрузка последней версии не рекомендуется, и рано или поздно это обрушит ваш сайт. Вот почему вы должны указывать точные версии, либо использовать псевдонимы версий:

 //cdn. jsDelivr.net/g/[email protected],[email protected] 


Так, [email protected] загрузит 2.1.0, и [email protected] загрузит 1.2.14. Но приведенная выше ссылка загрузит лишь главные файлы каждого проекта, и ничего больше.

Если вы хотите загрузить несколько файлов одного проекта, то можете сделать следующее:

//cdn.jsDelivr.net/g/[email protected],[email protected](angular.min.js+angular-resource.min.js+angular-animate.min.js+angular-cookies.min.js+angular-route.min.js+angular-sanitize.min.js) 


Если вы хотите загрузить CSS, то выберите CSS-файлы, используя приведенный выше формат. Если все файлы в группе URL имеют расширение .css, то сервер будет автоматически отвечать со строкой “Content-Type: text/css” в HTTP-заголовке. Во всех остальных случаях (для URLов /g/) используется строка “Content-Type: application/javascript”.

Далее, вы просто включаете URL в ваш веб-сайт, и все готово. Меньше DNS-запросов, меньше TCP-соединений, меньше HTTP-запросов = более быстрый веб-сайт.

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

Настоящий API


jsDelivr имеет полнофункциональный API, который может использоваться разработчиками в своих веб-сайтах для того, чтобы создавать пользовательские модули и все, что только можно представить.

Вы можете запросить именно то, что вам нужно, используя наш API, не загружая огромный JSON-пакет. И он также поддерживает cdnjs и Google. Таким образом, разработчики имеют все, что им нужно для того, чтобы создавать свои приложения.

Автообновления

jsDelivr libgrabber – это утилита, которая готовится к запуску на наших серверах и сможет автоматически обновлять все размещенные проекты, если эта функция будет сконфигурирована. Самое важное – это то, что авторам не надо ничего менять в своих репозиториях. Все изменения производятся на стороне jsDelivr.

Все, что вам нужно – это создать внутри проекта файл update.json с некоторой базовой информацией, который вы хотите автоматически обновлять в репозитории jsDelivr. Этот файл также поддерживает множество источникой для новых версий. Таких как, к примеру, npm, bower и непосредственно Github-репозитории. Эта функциональность по-прежнему находится в стадии разработки, но планируется к запуску в ближайшее время.

Помогите нам – попробуйте это!


jsDelivr – это очень интересный проект, который мне нравится разрабатывать и улучшать. Он также в значительной мере опирается на помощь со стороны сообщества. Рассмотрите возможность использования его на своих веб-сайтах и разместите на нем свои проекты.

И если вы заинтересованы в том, чтобы помочь нам, мы всегда можем принять любую помощь, просто присоединяйтесь к общению на GitHub.

Не стесняйтесь оставлять свои комментарии и задавать мне любые вопросы, которые могут у вас возникнуть.

Спасибо

JsDelivr – передовая, открытая и общедоступная CDN

Как разработчик, вы возможно в курсе о Google Hosted Libraries. Google предоставляет простой и быстрый способ, как включить в ваши веб-сайты 12 самых популярных JavaScript-библиотек.

Но что, если вы – вебмастер и хотите использовать преимущество быстрых CDN при использовании в других менее популярных проектах? Или же вы – разработчик и хотите сделать ваш проект более удобным в использовании и более доступным другим пользователям.

Здесь в игру вступает jsDelivr. jsDelivr – это бесплатная и свободная CDN, созданная для того, чтобы помочь разработчикам и вебмастерам. В ней нет ограничений по популярности и разрешены все типы файлов, включая библиотеки JavaScript, плагины jQuery, CSS-фрэймворки, шрифты и многое другое.

Добавление библиотеки

Чтобы добавить новую библиотеку или обновить существующую, все что должен сделать разработчик – это клонировать наш Github-репозиторий и применить те модификации, которые он считает нужным. Когда модератор просматривает Pull-запрос и сливает его с основной веткой, файлы сразу же становятся доступны на официальном веб-сайте.

Если модератор в онлайне, одобрение займет не более 20 минут, в противном случае оно может занять до 10 часов, пока кто-то не появится в онлайне. Однако, как только наше приложение автообновления будет готово, время рассмотрения снизится.

Надежность

Что же в действительности делает проект передовым? Идеей jsDelivr было не создание еще одной CDN, а предоставление очень быстрой и надежной инфраструктуры, которую разработчики и вебмастеры могут использовать, доверяя ей. Любой веб-сайт, будь то большой или маленький, может использовать ее, не беспокоясь. Наш сервис крайне надежен и не имеет ограничений на ширину канала.

Большое время отклика, таймауты и отсутствие сервиса – невыносимы, поэтому мы спроектировали уникальную систему для преодоления этих проблем, и предлагаем продукт, которому могут позавидовать даже CDN enterprise-уровня. Наши наивысшие приоритеты – это время непрерывной работы и производительность. Мы непрерывно все мониторим и всегда находимся в поиске новых технологий и провайдеров, которые могли бы в перспективе улучшить нашу CDN.

Инфраструктура

В отличие от конкурентов, jsDelivr использует уникальную инфраструктуру Multi-CDN, чтобы обеспечить максимально возможные производительность и время непрерывной работы. Ее главная магистральная сеть построена поверх CDN-сетей, предоставляемых MaxCDN и CloudFlare.

Мы также используем специализированные выделенные серверы там, где CDN-сети имеют небольшое представительство, или где их нет совсем. Всего на данный момент это выливается в 42 точки присутствия по всему миру. В будущем мы планируем увеличить число мест размещения, чтобы обеспечить высокую производительность даже в менее популярных странах.

Конечно, множество точек присутствия еще ничего не значит, если вы не можете правильно балансировать нагрузку между ними. Для системы балансировки нагрузки мы используем сервисы, предоставляемые Cedexis. Одной из их главных особенностей является то, что они собирают данные о производительности в реальном времени со всех главных CDN-провайдеров. Каждый день обрабатываются и становятся доступны всем пользователям Cedexis до 1,3 млрд. RUM-тестов производительности (RUM – Real User Monitoring/Measurements — измерения, проводимые при посещении сайтов реальными пользователями, а не роботами).

Измерение производительности

Для сбора данных этих RUM-тестов они развернули специализированный JavaScript-код на тысячах веб-сайтов. Каждый посетитель любого из этих веб-сайтов инициирует выполнение данного кода, и в то время, когда он просматривает веб-сайт, в бэкграунде начинается тестирование различных CDN-провайдеров. Тестирование не влияет на ощущения от серфинга и полностью прозрачно для пользователя. Вы можете увидеть, как это работает, посетив наш веб-сайт, открыв панель разработчика (F12) и перейдя на вкладку «Сеть».

Эти тесты прекрасны тем, что они не синтетические. Они отображают реальную производительность, которую получат реальные пользователи, если они решат скачать файл по одной из этих CDN-сетей.

Подлежит сохранению следующая информация:

  • метрики производительности для каждого из провайдеров
  • метрики доступности для каждого из провайдеров
  • Информация о браузере
  • Первые три октета IP-адреса пользователя

Теперь у нас есть вся информация, которую мы можем использовать в алгоритме “умной” балансировки нагрузки.

Каждый пользователь получает уникальный ответ, основанный на его местоположении и том, каким Интернет-провайдером он пользуется. Каждый раз, когда пользователь решает загрузить файл через jsDelivr, наш алгоритм берет данные о доступности и производительности за последние несколько минут, и затем находит самого оптимального в этот момент провайдера для данного пользователя. И все это в течение нескольких миллисекунд.

В первую очередь, он убеждается, что все провайдеры доступны. Для этого он использует RUM-метрики доступности и синтетический тест, который ежеминутно проверяет каждого провайдера на работоспособность. Далее провайдеры ранжируются по производительности относительно Интернет-провайдера для данного пользователя и его местоположения.

Как только находится самый быстрый провайдер, его имя возвращается пользователю. Например, 2 пользователя разных Интернет-провайдеров Лондона могут получить 2 разных ответа, потому что их Интернет-провайдеры имеют разные маршруты и разную производительность относительно CDN-провайдеров. Эта интеллектуальная система гарантирует максимальный аптайм и высокую скорость закачки для всех пользователей. Если провайдер станет недоступен, jsDelivr не ощутит никаких проблем и незамедлительно начнет использовать другого провайдера.

Этот алгоритм также моментально реагирует на ухудшение производительности. Например, если CDN-провайдер DDoS-ится в Европе и его время отклика увеличивается, jsDelivr заметит проблему и просто прекратит использование этого провайдера в Европе, но по-прежнему будет учитывать его для пользователей из США и других мест, которые не подвержены атаке.

Не полагайтесь в надежности работы и скорости на одну единственную CDN. Все может выйти из строя, но шансы того, что одновременно лягут две CDN и множество серверов, очень малы. Вот почему jsDelivr – это самое оптимальное решение для любого веб-сайта. И не важно, насколько он большой.

Должен также напомнить, что MaxCDN, CloudFlare, Cedexis и другие компании поддерживают jsDelivr бесплатно. Приятно видеть, что существуют организации, которые способны помогать open source проектам и строить быстрый и свободный Интернет.

Расширенные особенности

jsDelivr также поддерживает некоторые интересные и очень полезные особенности, такие как:

Aliasing версий

Вместо того, чтобы использовать уникальный URL для каждой версии, чтобы загрузить проект, с jsDelivr вы можете использовать псевдонимы. Возьмем к примеру, проект Abaaso. На данный момент последняя версия – 3.10.50, и вы можете загрузить его, как обычно, указав точную версию в своем URL. Но так как этот проект обновляется очень часто, вскоре ваша используемая версия устареет. Чтобы преодолеть эту проблему, теперь можно просто использовать следующий URL:

 //cdn.jsDelivr.net/abaaso/3.10/abaaso.min.js

Используя 3.10, вы указываете jsDelivr загрузить последнюю версию проекта из ветки 3.10, которой в данном случае является 3.10.50. Это оптимальное решение для большинства авторов, поскольку они могут загрузить последнюю вспомогательную версию, не беспокоясь о крупных изменениях, которые могли бы нарушить работоспособность их веб-сайта.

Конечно, можно загрузить последнюю версию ветки v3, используя следующий URL:

 //cdn.jsDelivr.net/abaaso/3/abaaso.min.js

И если по какой-то причине вам всегда нужно загружать последнюю доступную версию, вы можете использовать:

 //cdn.jsDelivr.net/abaaso/latest/abaaso.min.js

Используя “latest”, вы говорите серверу загрузить самую свежую версию, которая у него есть. Конечно, это опасно, и рано или поздно может вывести из строя ваш сайт. Так что используйте эту функцию с осторожностью.

Загрузка нескольких файлов за один HTTP-запрос

jsDelivr – первая CDN для поддержки такого рода функциональности. Вы можете загрузить несколько файлов с помощью одного HTTP-запроса. Подобно объединению и сжатию JavaScript-файлов на вашем собственном сервере, только на этот раз — в кэше огромной и умной сети jsDelivr.

Все, что вам нужно сделать – это создать собственный URL с проектами и файлами, которые вы хотите объединить, и их версиями, если необходимо. Например, чтобы загрузить последнюю версию проектов abaaso, ace и alloyui вы используете следующий синтаксис:

 //cdn.jsDelivr.net/g/abaaso,ace,alloyui 

Имейте в виду, что загрузка последней версии не рекомендуется, и рано или поздно это обрушит ваш сайт. Вот почему вы должны указывать точные версии, либо использовать псевдонимы версий:

 //cdn.jsDelivr.net/g/[email protected],[email protected] 

Так, [email protected] загрузит 2.1.0, и [email protected] загрузит 1.2.14. Но приведенная выше ссылка загрузит лишь главные файлы каждого проекта, и ничего больше.

Если вы хотите загрузить несколько файлов одного проекта, то можете сделать следующее:

//cdn.jsDelivr.net/g/[email protected],[email protected](angular.min.js+angular-resource.min.js+angular-animate.min.js+angular-cookies.min.js+angular-route.min.js+angular-sanitize.min.js) 

Если вы хотите загрузить CSS, то выберите CSS-файлы, используя приведенный выше формат. Если все файлы в группе URL имеют расширение .css, то сервер будет автоматически отвечать со строкой “Content-Type: text/css” в HTTP-заголовке. Во всех остальных случаях (для URLов /g/) используется строка “Content-Type: application/javascript”.

Далее, вы просто включаете URL в ваш веб-сайт, и все готово. Меньше DNS-запросов, меньше TCP-соединений, меньше HTTP-запросов = более быстрый веб-сайт.

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

Настоящий API

jsDelivr имеет полнофункциональный API, который может использоваться разработчиками в своих веб-сайтах для того, чтобы создавать пользовательские модули и все, что только можно представить.

Вы можете запросить именно то, что вам нужно, используя наш API, не загружая огромный JSON-пакет. И он также поддерживает cdnjs и Google. Таким образом, разработчики имеют все, что им нужно для того, чтобы создавать свои приложения.

Автообновления

jsDelivr libgrabber – это утилита, которая готовится к запуску на наших серверах и сможет автоматически обновлять все размещенные проекты, если эта функция будет сконфигурирована. Самое важное – это то, что авторам не надо ничего менять в своих репозиториях. Все изменения производятся на стороне jsDelivr.

Все, что вам нужно – это создать внутри проекта файл update.json с некоторой базовой информацией, который вы хотите автоматически обновлять в репозитории jsDelivr. Этот файл также поддерживает множество источникой для новых версий. Таких как, к примеру, npm, bower и непосредственно Github-репозитории. Эта функциональность по-прежнему находится в стадии разработки, но планируется к запуску в ближайшее время.

Помогите нам – попробуйте это!

jsDelivr – это очень интересный проект, который мне нравится разрабатывать и улучшать. Он также в значительной мере опирается на помощь со стороны сообщества. Рассмотрите возможность использования его на своих веб-сайтах и разместите на нем свои проекты.

И если вы заинтересованы в том, чтобы помочь нам, мы всегда можем принять любую помощь, просто присоединяйтесь к общению на GitHub.

Не стесняйтесь оставлять свои комментарии и задавать мне любые вопросы, которые могут у вас возникнуть.

Спасибо

Автор: jimaek

Источник

jsDelivr — Продвинутая общедоступная CDN с открытым исходным кодом — Mozilla Hacks

Это гостевой пост Дмитрия Акулова и его проекта jsDelivr. – примечание редактора.

Как разработчик вы, вероятно, знаете о размещенных библиотеках Google. Google предлагает простой и быстрый способ включить 12 самых популярных js-библиотек на свои веб-сайты.

Но что, если вы веб-мастер и хотите воспользоваться преимуществами быстрой CDN и для других менее популярных проектов? Или, если вы разработчик и хотите упростить доступ к вашему проекту и его использование другими пользователями.

Здесь в игру вступает jsDelivr. jsDelivr — это бесплатная CDN с открытым исходным кодом, созданная для помощи разработчикам и веб-мастерам. Ограничений по популярности нет, разрешены все типы файлов, включая библиотеки JavaScript, плагины jQuery, фреймворки CSS, шрифты и многое другое.

Добавление библиотеки

Чтобы добавить новую библиотеку или обновить существующую, все, что нужно сделать разработчику, — это клонировать наш репозиторий Github и применить изменения, которые он считает нужными. Как только модератор просматривает запрос на слияние и объединяет его, файлы сразу же становятся доступными на официальном сайте.

Если мод находится в сети, одобрение не должно занимать более 20 минут, в противном случае может пройти до 10 часов, пока кто-то не подключится к сети. Но как только наша утилита автоматического обновления появится в сети, время проверки сократится.

Надежность

Но что на самом деле делает его таким продвинутым? Идея jsDelivr заключалась не в том, чтобы создать еще одну общедоступную CDN, а в том, чтобы предложить сверхбыструю и надежную инфраструктуру, которой разработчики и владельцы веб-сайтов могли бы доверять и использовать. Любой большой или маленький веб-сайт может использовать его, не беспокоясь об этом. Ограничений по пропускной способности нет, и наш сервис надежен.

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

Инфраструктура

В отличие от конкурентов jsDelivr использует уникальную инфраструктуру Multi-CDN, чтобы обеспечить максимально возможное время безотказной работы и производительность. Основная его основа построена поверх сетей CDN, предоставляемых MaxCDN и CloudFlare.

Кроме того, мы используем настраиваемые серверы в местах, где CDN практически отсутствуют. Всего на данный момент это 42 точки присутствия по всему миру. В будущем мы планируем добавить еще больше мест, чтобы обеспечить максимальную производительность даже в менее популярных странах.

Конечно, большое количество локаций ничего не значит, если вы не можете правильно распределить нагрузку между ними. Для системы балансировки нагрузки мы используем услуги Cedexis. Одной из их основных функций являются данные о производительности в реальном времени, которые они собирают у всех основных провайдеров CDN. Ежедневно обрабатывается 1,3 миллиарда RUM (Real User Metrics) тестов производительности, которые доступны всем пользователям Cedexis.

Измерение производительности

Чтобы собрать эти тесты RUM, они развернули специальный код JavaScript на тысячах веб-сайтов. Каждый посетитель одного из этих веб-сайтов выполняет код и начинает тестировать различных провайдеров CDN в фоновом режиме при просмотре веб-сайта. Тестирование никак не влияет на работу в Интернете и полностью прозрачно для пользователя. Вы можете увидеть, как это работает, посетив наш веб-сайт и открыв инструменты разработчика на вкладке «Сеть».

Прелесть этих тестов в том, что они не синтетические. Они отражают реальную производительность, которую получат реальные пользователи, если загрузят файл с одной из этих CDN.

Затем сохраняется следующая информация:

  • Показатели производительности для каждого из наших поставщиков.
  • Показатели доступности для каждого из наших провайдеров.
  • Пользовательский агент браузера
  • Первые три октета IP-адреса пользователя

Теперь, когда у нас есть вся эта информация, мы можем использовать ее в нашем интеллектуальном алгоритме балансировки нагрузки.

Каждый пользователь получает уникальный ответ, основанный на его местоположении и провайдере Интернет-услуг. Каждый раз, когда пользователь запрашивает загрузку файла с jsDelivr, наш алгоритм извлекает данные о производительности и доступности, доступные за последние несколько минут, а затем определяет наиболее оптимального поставщика для этого конкретного пользователя и этого конкретного времени. Все это за несколько мс.

Сначала он убеждается, что все доступные провайдеры подключены к сети. Для этого он использует данные о доступности RUM и синтетический тест, который каждую минуту проверяет время безотказной работы каждого провайдера. Затем он сортирует провайдеров по производительности для интернет-провайдера пользователя и его/ее местоположения.

Как только у него будет самый быстрый провайдер, он вернет имя хоста пользователю. Так, например, 2 разных пользователя в Лондоне с разными интернет-провайдерами могут получить 2 разных ответа, потому что их интернет-провайдеры имеют разную маршрутизацию и производительность для разных провайдеров CDN. Эта интеллектуальная система гарантирует максимальное время безотказной работы и быструю загрузку для всех пользователей. Если провайдер выходит из строя, у jsDelivr вообще не возникнет никаких проблем, и он сразу же начнет обслуживать другого провайдера.

Этот алгоритм также немедленно реагирует на снижение производительности. Например, провайдер CDN подвергается DDoS-атаке в Европе, и время его ответа увеличивается, jsDelivr примет это изменение и просто прекратит использовать этого провайдера в Европе, но по-прежнему будет рассматривать его для пользователей в США и других местах, которые не пострадали от атаки.

Не полагайтесь на одну CDN в отношении времени безотказной работы и скорости. Все может выйти из строя, но вероятность того, что 2 CDN и несколько серверов выйдут из строя одновременно, очень мала. Вот почему jsDelivr — самое оптимальное решение для любого веб-сайта. Неважно, насколько он велик.

Я также должен отметить, что MaxCDN, CloudFlare, Cedexis и остальные компании спонсируют jsDelivr бесплатно. Приятно видеть, что есть компании, которые готовы помочь проектам с открытым исходным кодом и построить быстрый и бесплатный интернет.

Дополнительные функции

jsDelivr также поддерживает некоторые интересные и очень полезные функции, такие как:

Псевдоним версии

Вместо использования уникального URL-адреса для каждой версии для загрузки проекта с помощью jsDelivr вы можете использовать псевдонимы. Возьмем, к примеру, проект Абаасо. На данный момент последней версией является 3.10.50, и вы можете загрузить ее, указав точную версию в своем URL-адресе, как всегда. Но так как этот проект очень часто обновляется, вы довольно скоро будете использовать старую версию. Чтобы решить эту проблему, теперь вы можете просто использовать следующий URL:

 //cdn.jsdelivr.net/abaaso/3.10/abaaso.min.js 

Используя 3.10, вы указываете jsDelivr загрузить последнюю версию, которая есть в ветке 3.10, в данном случае это 3.10.50. Это оптимальное решение для большинства авторов, потому что они могут загружать последнюю второстепенную версию, не беспокоясь о серьезных изменениях, которые могут повредить их веб-сайт.

Конечно, можно загрузить последнюю версию в ветке v3, используя следующий URL-адрес:

 //cdn.jsdelivr.net/abaaso/3/abaaso.min.js 

И если по какой-либо причине вам нужно всегда загружать последнюю доступную версию в любой основной ветке, вы можете использовать:

 //cdn. jsdelivr.net/abaaso/latest/abaaso.min.js 

Используя последнюю версию , вы указываете серверу загрузить самую последнюю версию, которая у него есть. Это, конечно, опасно и при достаточном количестве времени может сломать ваш сайт. Поэтому используйте эту функцию с осторожностью.

Загрузить несколько файлов одним HTTP-запросом

jsDelivr — первая CDN, поддерживающая такую ​​функциональность. Вы можете загрузить несколько файлов с помощью одного HTTP-запроса. Подобно объединению и минимизации файлов js на вашем собственном сервере, но кэшируется огромной и умной сетью jsDelivr.

Все, что вам нужно сделать, это создать свой собственный URL-адрес с проектами и файлами, которые вы хотите объединить, и их версиями, если это необходимо. Например, чтобы загрузить последнюю версию для проектов abaaso, ace и allui, вы должны использовать следующий синтаксис:

.

 //cdn.jsdelivr.net/g/abaaso,ace,alloyui 

Имейте в виду, что загрузка последней версии не рекомендуется, и при достаточном количестве времени ваш сайт сломается. Вот почему вы должны указать точные версии или использовать псевдонимы версий:

 //cdn.jsdelivr.net/g/[email protected],[email protected] 

Итак, [email protected] загрузит 2.1.0, а [email protected] загрузит 1.2.14. Но приведенный выше URL-адрес будет загружать основные файлы каждого проекта и ничего больше.

Если вы хотите загрузить несколько файлов из одного проекта, вы можете сделать следующее:

 //cdn.jsdelivr.net/g/[email protected],[email protected](angular.min.js+angular-resource.min.js+angular-animate.min.js+angular-cookies.min.js +angular-route.min.js+angular-sanitize.min.js) 

Если вы хотите загрузить CSS, выберите файлы CSS в указанном выше формате. Если все файлы в URL-адресе группы имеют расширение .css, сервер автоматически ответит HTTP-заголовком Content-Type: text/css . Во всех остальных случаях (для URL-адресов /g/) используется Content-Type: application/javascript .

Затем вы просто включаете URL-адрес своего веб-сайта, и все готово. Меньше разрешения DNS, меньше TCP-соединений, меньше HTTP-запросов = более быстрый веб-сайт.

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

Настоящий API

jsDelivr имеет полнофункциональный API, который разработчики могут использовать на своих веб-сайтах для создания пользовательских модулей и всего остального, о чем вы можете подумать https://github.com/jsdelivr/api

Вы можете запросить именно то, что вам нужно, используя наш API, не загружая огромный пакет json. И он также поддерживает cdnjs и Google. Таким образом, у разработчиков есть все необходимое для создания своих приложений.

Автоматические обновления

jsDelivr libgrabber — это утилита, которая будет работать на наших серверах и может автоматически обновлять все размещенные проекты, если она настроена. Самое приятное то, что авторам не нужно ничего менять в своих репозиториях. Все изменения производятся на стороне jsDelivr.

Все, что вам нужно, это создать файл update.json с некоторой базовой информацией внутри проекта, который вы хотите автоматически обновлять в репозитории jsDelivr. Этот файл также поддерживает несколько источников для новых версий. Например, npm, bower и непосредственно репозитории Github. Он все еще находится в разработке, но вскоре его планируется выпустить.

Попробуйте, помогите!

jsDelivr — очень интересный проект, который мне нравится развивать и улучшать. Он также в значительной степени зависит от помощи сообщества. Рассмотрите возможность использования его на своих веб-сайтах и ​​размещайте там свои проекты.

И если вы хотите помочь, мы всегда можем вам помочь, просто присоединяйтесь к обсуждению на Github.

Не стесняйтесь оставлять свои комментарии и задавать мне любые вопросы, которые могут у вас возникнуть.

Спасибо

Системный администратор. Влюблен в технологии, высокую производительность и быстрый Интернет. Иногда притворялся разработчиком. Работает в MaxCDN.

  • www.jsdelivr.com
  • @jimaek

Еще статьи Дмитрия Акулова…

Технический евангелист и редактор Mozilla Hacks. Ведёт лекции и ведет блоги о HTML5, JavaScript и Open Web. Роберт твердо верит в HTML5 и открытую сеть и с 1999 года работает над разработкой интерфейса для Интернета в Швеции и Нью-Йорке.

Он также регулярно ведет блог на http://robertnyman.com и любит путешествовать и встречаться с людьми.

  • robertnyman.com
  • @robertnyman
  • Google+

Другие статьи Роберта Наймана [почетный редактор]…

Features — jsDelivr

jsDelivr предоставляет зеркала для npm, GitHub, плагинов WordPress и настраиваемые конечные точки для нескольких других проектов с особыми требованиями. Если наши обычные конечные точки не подходят для вашего варианта использования, сообщите нам, и мы что-нибудь придумаем!

Если вы являетесь автором пакета, ознакомьтесь с нашими советами для авторов пакетов, чтобы максимально упростить использование вашего пакета.

npm CDN

Мы используем постоянное хранилище S3, чтобы гарантировать, что все файлы останутся доступными, даже если npm выйдет из строя или пакет будет удален его автором. Файлы извлекаются непосредственно из npm только в первый раз или когда S3 выходит из строя.

Загрузить любой проект, размещенный на npm:

 https://cdn.jsdelivr.net/npm/package@version/file 

Загрузить точную версию файла:

 https://cdn.jsdelivr.net/ npm/[email protected]/dist/jquery.min.js 

Используйте диапазон версий вместо точной версии:

 https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js
 https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js  

Если вы используете эту функцию, а запрошенный вами файл недоступен в новейшей версии пакета, ссылка будет продолжать работать благодаря нашей функции отката версии. Мы продолжим обслуживать файл из старой версии пакета, а не с ошибкой 404.

Загрузка по тегу (не рекомендуется для производственного использования):

 https://cdn. jsdelivr.net/npm/jquery@beta/dist/jquery.min.js 

Полностью опустите версию или используйте «последнюю» для загрузки последней версии (не рекомендуется для использования в производстве):

 https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js
 https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js  

Запрашивать последнюю версию (в отличие от «последней основной» или «последней дополнительной») опасно, поскольку обычно приходят основные версии с критическими изменениями. Делайте это только в том случае, если вы действительно знаете, что делаете.

Добавьте «.min» в любой файл JS/CSS, чтобы получить уменьшенную версию — если такой версии не существует, мы создадим ее для вас. Все сгенерированные файлы поставляются с исходными картами и могут быть легко использованы во время разработки: большой файл может занять несколько секунд. Однако мы храним все сгенерированные файлы в нашем постоянном хранилище, поэтому эта задержка распространяется только на первые несколько запросов.

Пропустите путь к файлу, чтобы получить файл по умолчанию (в настоящее время не рекомендуется). Этот файл всегда минифицирован:

 https://cdn.jsdelivr.net/npm/[email protected]
 https://cdn.jsdelivr.net/npm/jquery@3 
 https://cdn.jsdelivr.net/npm/jquery  

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

Получить список каталогов:

 https://cdn.jsdelivr.net/npm/[email protected]/
 https://cdn.jsdelivr.net/npm/[email protected]/dist/  

GitHub CDN

Мы рекомендуем использовать npm для проектов, которые его поддерживают для улучшения UX — пакеты npm доступны для поиска на нашем веб-сайте, а страницы пакетов содержат дополнительную полезную информацию, такую ​​как описание и ссылку на домашнюю страницу.

Мы используем постоянное хранилище S3, чтобы гарантировать, что все файлы останутся доступными, даже если GitHub выйдет из строя или репозиторий или выпуск будет удален его автором. Файлы извлекаются напрямую из GitHub только в первый раз или когда S3 выходит из строя.

Загрузить любой выпуск, коммит или ветку GitHub:

 https://cdn.jsdelivr.net/gh/user/repo@version/file 

Загрузить точную версию файла:

 https://cdn. jsdelivr.net/gh/jquery/[email protected]/dist/jquery.min.js
 https://cdn.jsdelivr.net/gh/jquery/jquery@32b00373b3f42e5cdcb709df53f3b08b7184a944/dist/jquery.min.js  

Используйте диапазон версий вместо точной версии:

 https://cdrn.jsdecliv.js /gh/jquery/[email protected]/расстояние/jquery.min.js
 https://cdn.jsdelivr.net/gh/jquery/jquery@3/dist/jquery.min.js  

Если вы используете эту функцию, а запрошенный вами файл недоступен в новейшей версии, ссылка будет продолжайте работать благодаря нашей функции отката версии. Мы продолжим обслуживать файл из более ранней версии, а не с ошибкой 404.

Полностью опустите версию или используйте «последнюю» для загрузки последней версии (не рекомендуется для использования в производстве):

 https://cdn. jsdelivr.net/gh/jquery/jquery@latest/dist/jquery.min. js
 https://cdn.jsdelivr.net/gh/jquery/jquery/dist/jquery.min.js  

Запрос последней версии (в отличие от «последней основной» или «последней дополнительной») опасен, поскольку основные версии обычно приходят с критическими изменениями. Делайте это только в том случае, если вы действительно знаете, что делаете.

Добавьте «.min» в любой файл JS/CSS, чтобы получить уменьшенную версию. Если такой версии не существует, мы создадим ее для вас. Все сгенерированные файлы поставляются с исходными картами и могут быть легко использованы во время разработки:

 https://cdn.jsdelivr.net/gh/jquery/[email protected]/src/core.min.js 

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

Получить список каталогов:

 https://cdn.jsdelivr.net/gh/jquery/jquery@3. 2.1/
 https://cdn.jsdelivr.net/gh/jquery/[email protected]/dist/  

Объединить несколько файлов

Наша комбинированная конечная точка позволяет загружать несколько файлов из конечных точек npm и GitHub одним запросом:

 https://cdn.jsdelivr.net/combine/url1,url2,url3 

Все функции, которые работают для отдельных файлов (диапазоны версий, минимизация и т. д.), работают и здесь. Все объединенные файлы поставляются с исходными картами и могут быть легко использованы во время разработки.

 https://cdn.jsdelivr.net/combine/gh/jquery/[email protected]/dist/jquery.min.js,gh/twbs/[email protected]/dist/js/bootstrap.min.js
 https://cdn.jsdelivr.net/combine/npm/[email protected]/dist/css/bootstrap.min.css,npm/[email protected]/dist/css/bootstrap-theme.min.css  

Объединение больших/много файлов может занять несколько секунд. Однако мы храним все сгенерированные файлы в нашем постоянном хранилище, поэтому эта задержка распространяется только на первые несколько запросов.

WordPress CDN

Загрузить любой плагин из репозитория SVN плагинов WordPress.org:

 https://cdn.jsdelivr.net/wp/plugins/project/tags/version/file 

Загрузить точную версию файла :

 https://cdn.jsdelivr.net/wp/plugins/wp-slimstat/tags/4.6.5/wp-slimstat.js 

Загрузите последнюю версию (не рекомендуется для производственного использования):

 https://cdn.jsdelivr.net/wp/plugins/wp-slimstat/trunk/wp-slimstat.js 

Запрос последней версии опасен, поскольку новая версия может прийти с критическими изменениями. Делайте это только в том случае, если вы действительно знаете, что делаете.

Загрузить любую тему из SVN-репозитория тем WordPress.org:

 https://cdn.jsdelivr.net/wp/themes/project/version/file 

Загрузить точную версию файла:

 https://cdn.jsdelivr.net/wp/themes/twenty-eightteen/1.7/assets/js/html5.js 

Добавьте «.min» к любому файлу JS/CSS, чтобы получить уменьшенную версию — если есть не существует, мы создадим его для вас. Все сгенерированные файлы поставляются с исходными картами и могут быть легко использованы во время разработки:

 https://cdn.jsdelivr.net/wp/themes/twenty-eightteen/1.7/assets/js/html5.min.js 

Пользовательские конечные точки

Мы предоставляем настраиваемые конечные точки для следующих проектов (свяжитесь с нами, если вам это нужно):

  • emojione.com
  • Foundation.zurb.com
  • hex.pm
  • jspm.io
  • webjars.org

Советы авторам пакетов, убедитесь, что предоставленные файлы работают в браузере

    make
  • использовать semver для управления версиями (это обеспечивается npm, но не GitHub)
  • если вы распространяете мини-файлы JS/CSS, также включите исходные карты для этих файлов
  • если вы не хотите предоставлять мини-файлы, это нормально — мы сделаем это за вас
  • избегайте имен выпусков, которые дублируют имена веток, если ветка и выпуск имеют разное содержимое, поскольку их нельзя изменить после публикации в jsDelivr

Настройка файла по умолчанию в package.

This entry was posted in Популярное