Подтвердить что ты не робот

Microsoft CDN для jQuery или Google CDN?

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

4b9b3361

Ответ 1

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

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

Важное примечание.. Если вы создаете приложение для интрасети, держитесь подальше от подхода CDN. Неважно, кто его размещает, если вы не находитесь на очень перегруженном сервере внутри, ни один CDN не даст вам больше производительности, чем локальная сеть 100 МБ /1 ГБ. Если вы используете CDN для строго внутреннего приложения, вы снижаете производительность. Правильно настройте заголовки истечения кеша и проигнорируйте CDN в сценарии только для интрасети.

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

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

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

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

Наш сервер:

  • Combined.js? v = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

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

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

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

Ответ 2

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

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

Ответ 3

Google отправит вам версию jQuery, минитируемую своим собственным программным обеспечением, эта версия на 6 килобайт легче стандартной сокращенной версии, обслуживаемой MS. Идите в Google.

Ответ 4

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

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

Ответ 5

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

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

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

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

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

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

Ответ 6

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

Ответ 7

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

<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> 

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

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

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

  • ajax.googleapis.com
  • code.jquery.com
  • ajax.aspnetcdn.com
  • 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

Ответ 12

Как указано Pingdom:

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

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

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

Ответ 13

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

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

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

Ответ 14

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

Ответ 15

Также учитывайте, когда вы используете Google CDN, что иногда люди делают опечатки, такие как ajax.googelapis.com. Это потенциально может создать действительно неприятную атаку xss (cross site scripting). Я действительно протестировал это, зарегистрировав опечатку googlapis.com и очень быстро обнаружил, что я обслуживаю запросы для javascript, карт, css и т.д.

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

Спасибо

Ответ 16

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

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

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

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

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

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

Ответ 17

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

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

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

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

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

Ответ 18

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

Поскольку хостинг 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% работает, но я просто собирался написать идею, а не пример. Это указывает на JQuery, размещенный в Google, а не на Microsoft, поскольку я не мог найти ссылку)