Microsoft CDN для jQuery или Google CDN? [закрытый]


действительно ли имеет значение, какой CDN вы используете для ссылки на файл jquery или любой файл javascript, если на то пошло. Один потенциально быстрее, чем другие? Какие еще факторы могут сыграть роль в том, что cdn вы решили использовать? Я знаю, что у Microsoft, Yahoo и Google теперь есть CDN.

18 185

18 ответов:

обновление на основе комментариев:

короткая версия: Это не имеет большого значения, но это может зависеть от того, что они принимают. Все они размещают разные вещи: Google не размещает jQuery.Проверьте, Microsoft не размещала jQuery-UI, так как 2016 они делают!!, Microsoft предлагает свои скрипты, которые в противном случае обслуживались бы через ScriptResource.axd и более легкая интеграция (например элемента управления scriptmanager с ASP.Net 4.0).

Важное Замечание: Если вы создаете приложение интрасети, держитесь подальше от подхода CDN. Это не имеет значения, кто принимает его, если вы не находитесь на очень перегруженный сервер внутренне, никакой CDN не даст вам больше производительности, чем локальный 100Mb/1Gb ethernet. Если вы используете CDN для строго внутреннего приложения вредит производительности. правильно установите заголовки истечения срока действия кэша и игнорировать CDN существуют в сценарии только для интрасети.

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

проект, который я сейчас использую, использует оба CDNs, которые лучше всего подходят для нашего решения. Несколько факторов играют в это. Пользователи сстарый браузер все еще, вероятно, делают 2 одновременных запроса на домен как рекомендовано спецификацией HTTP. Это не проблема для тех, кто работает что-то прилично новое, что поддерживает конвейеризацию (каждый текущий браузер), но на основе другого фактора мы выбиваем это ограничение, по крайней мере, в отношении javascript.

CDN Google, который мы используем для:

CDN Microsoft, который мы используем для:

наш сервер:

  • смешанная.Джей?v=2.2.0.6190 (майор.Незначительный.Итерация.Набор изменений)

Так как часть нашего процесса сборки объединяя и минимизируя все пользовательские javascript, мы делаем это с помощью пользовательского диспетчера сценариев, который включает в себя версии выпуска или отладки (не минимизированные) этих сценариев в зависимости от сборки. Поскольку Google не размещает пакет проверки jQuery, это может быть обратной стороной. MVC включает / использует это в своем выпуске 2.0, поэтому вы можете полностью полагаться на CDN Microsoft для всех ваших потребностей,и все это автоматически через ScriptManager.

единственный аргумент было бы сделано DNS раз, есть затраты на это с точки зрения скорости загрузки страницы. В Среднем: просто потому, что он используется больше (это дольше) ajax.googleapis.com скорее всего, будет возвращен DNS раньше, чем ajax.microsoft.com, просто потому, что локальный DNS-сервер с большей вероятностью получит запрос на него (это первый пользователь в штрафной зоне). Это же очень незначительная вещь и должна рассматриваться только в том случае, если производительность чрезвычайно важна, вплоть до миллисекунда.
(Да: я понимаю, что этот момент противоречит моему использованию обоих CDNs, но в нашем случае время DNS намного затмевает время ожидания на javascript / блокировке, которая происходит)

наконец, если вы еще не смотрели на него, один из лучших инструментов есть Firebug, и некоторые плагины к нему: Скорость Страницы и YSlow. Если вы используете CDN, но ваши страницы запрашивают изображения каждый раз из-за отсутствия кэш-заголовки, вам не хватает низко висящих фруктов. Чистая панель Firebug может быстро дать вам быструю разбивку времени загрузки страницы, а скорость страницы/YSlow может предложить несколько хороших предложений, чтобы помочь.

вы должны абсолютно использовать Google CDN для jQuery (и это исходит от Microsoft-ориентированного разработчика).

Это простая статистика. Те, кто рассмотрит возможность использования MS CDN для jQuery, всегда будут в меньшинстве. Слишком много не-МС разработчиков с помощью jQuery, которые будут использовать Google и не рассмотреть возможность использования корпорации Майкрософт. Поскольку одним из больших выигрышей с публичным CDN является улучшенное кэширование, разделение использования между несколькими CDNs уменьшает потенциал ради этой выгоды.

Google отправит вам версию jQuery, уменьшенную с помощью собственного программного обеспечения, эта версия на 6 КБ легче, чем стандартная уменьшенная версия, обслуживаемая MS.Go для Google.

одна незначительная вещь, которую следует учитывать, заключается в том, что обе компании предлагают несколько разные "дополнительные" библиотеки:

в зависимости от ваших потребностей, это может быть актуальным.

следует также отметить, что как ajax.microsoft.com является поддоменом microsoft.com запросы присылайте всем microsoft.com файлы cookie добавляют к общему времени, которое требуется для возврата файла.

также, ajax.microsoft.com использует сжатие IIS7 по умолчанию, которое уступает стандартному сжатию, которое используют другие веб-серверы.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4 K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5 K

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

поэтому я настоятельно рекомендую использовать Google.

Это, вероятно, не имеет значения, но вы можете проверить это с помощью некоторого тестирования A/B. Отправьте половину своего трафика на один CDN, а половину на другой и настройте некоторое профилирование для измерения ответа. Я бы подумал, что более важно иметь возможность легко переключаться в случае, если у одного или другого были серьезные проблемы с недоступностью.

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

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

речь идет о статистике:jquery.com загружает jQuery из Google. А также Twitter, Stackoverflow и многие другие. Таким образом, есть довольно высокие возможности, что ваш пользователь сайта уже имеет его кэширование = нет загрузки вообще.

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

один потенциально быстрее, чем другие?

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

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

кто был быстрее:code.jquery.com на 0,1 второй в обоих тестах

кто был медленнее:ajax.aspnetcdn.com на 0,7 секунды в первом тесте и ajax.googleapis.com на 1 секунду во втором тесте

здесь 1-й тест (каждый был протестирован 3 раза):

видео: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

отчеты: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

здесь 2-й тест (еще по 3):

видео: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

отчеты: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR

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

еще одно соображение - если ваш сайт SSL и вам нужно поддерживать Android 2.1 (или более раннюю версию), сертификат SSL на HTTPS версии Microsoft CDN приведет к сбою этих версий браузера Android, в этой проблеме:http://code.google.com/p/android/issues/detail?id=5001. это не "ошибка" Microsoft, так как сертификат SSL технически действителен, и дефект находится в реализации SSL Android... но это приведет к краху вашего сайта, однако.

сертификат SSL на CDN Google не затрагивает эту конкретную проблему (связанную с "именем Alt субъекта сертификата"сертификата).

Итак, для поддержки SSL + Android 2.1 используйте Google CDN.

Как заявил Pingdom:

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

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

несколько замечаний по производительности: CDN Google последовательно является самым медленным из трех как в Северной Америке, так и в Европе. В Европе CDN от Microsoft является самым быстрым.

мой ответ немного отличается от других, я пойду с microsoft, если вам нужен jQuery validator, который почти всем нужен, если вы используете jquery.

Microsoft CDN http connection является Keep-Alive, что является большим плюсом при запросе нескольких элементов.

поэтому, если вам нужна проверка jquery, используйте Microsoft CDN, даже если вам нужен jQuery ui, используйте microsoft, потому что google не поддерживает keep-alive, поэтому каждый запрос находится сам по себе. так что смешивание таким образом-это плюс. если вы используете microsoft только для валидатора, то вы делаете отдельное соединение с сервером google для каждого запроса.

летом он говорит, что microsoft не предлагает пользовательский интерфейс, что не правильно (больше). Это может быть downloadloade в http://www.asp.net/ajaxlibrary/cdn.ashx.

также учитывайте при использовании Google CDN, что несколько раз люди делают опечатки, такие как ajax.googelapis.com это потенциально может создать действительно неприятную атаку xss (межсайтовый сценарий). Я реально проверял это путем регистрации googlapis.com опечатка и очень быстро нашел себя обслуживать запросы для JavaScript, карты, CSS и т. п.

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

спасибо

Я бы посоветовал вам основывать свое использование на общем местоположении пользователей, на которых вы ориентируетесь.

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

Если ваш сайт также ориентирован на Китай, то использование CDN от Microsoft было бы лучшим выбором. Я знаю из своего опыта, поскольку серверы Google продолжали блокироваться китайским правительством, делая веб-сайты, которые используют их, не загружаемыми.

*обратите внимание, что вы может cos создавать региональные сайты, например cn.mysite.com чтобы удовлетворить специально для Китая, но если у вас мало ресурсов и времени, его стоит рассмотреть.

полный список Microsoft CDN здесь. http://www.asp.net/ajaxlibrary/cdn.ashx

с тех пор они переименованы в ajax.aspnetcdn.com, что снижает вероятность блокировки по правилам брандмауэра.

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

например, при включении Google Analytics в защищенное приложение браузер по-прежнему отправляет текущий URL-адрес в качестве заголовка "referer". Любые идентификаторы, например идентификатор сеанса или секретный токен, могут отображаться в их журналах. Например, если IP клиента 192.0.2.5 ссылки https://healthsystem.пример / условие / импотенция, тогда хорошо, вы можете вывести информацию, которая считается довольно частной.

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

хотя вы можете доверять Google, Microsoft или Yahoo, ваши пользователи не могут.

для такие отрасли, как финансы, юриспруденция и здравоохранение, вы можете создать свой собственный CDN с помощью поставщика (например, Akamai), с которым вы можете подписать BAA.

Я бы использовал оба!

поскольку хостинг Google Jquery существует намного дольше, шансы на то, что люди уже будут кэшировать его по сравнению с Microsoft, намного выше, поэтому я бы сначала это сделал.

лично я бы использовал что-то вроде этого -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Не уверен, что это 100% работает, но я просто собирался написать идею, а не пример - это ссылается на размещенный в Google Jquery, а не на Microsoft, поскольку я не мог найти ссылка)