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

187

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

Xaisoft
источник

Ответы:

151

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

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

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

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

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

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

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

Наш сервер:

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

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

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

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

Ник Крейвер
источник
26
Менее вероятно, будет заблокирован? Я хотел бы знать, как вы пришли к этой идее. В любом случае, сеть MS - это не MS, а akamai, которые делают серверы с балансировкой нагрузки гораздо дольше, чем Google, что также делает бессмысленной «лучшую систему аварийного переключения». На самом деле, если вы собираетесь предъявлять претензии, как это, некоторые доказательства были бы хорошими.
Blowdart
16
Некоторые компании, и я работал на некоторых, блокируют * .microsoft.com сразу как часть их блокировки обновления Windows. Это верно? Нет, так бывает? Да. Пример: ajax.microsoft.com/...it относится к блоку * .microsoft.com, а не к исключению www, он блокируется, когда компания решает заблокировать что-либо, кроме www.microsoft.com. Я не сказал, что это очень вероятно, я сказал, что это более вероятно, потому что я никогда не видел заблокированный Google, но видел обратное.
Ник Крейвер
5
И я видел, что Google заблокирован, чтобы остановить gmail на государственных сайтах. Но поскольку это так редко, я вряд ли попытался бы использовать это в качестве оправдания в этом случае.
Blowdart
19
С тех пор, как это было написано, MS добавили jQuery-UI в свой CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Уилл Дин
3
@Nick Microsoft переместила свой CDN с ajax.microsoft.com на ajax.aspnetcdn.com. Таким образом, нет никаких шансов заблокировать CDN Microsoft как часть блокировки обновлений Windows.
Сачин Джозеф
88

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

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

Дейв Уорд
источник
7
если мы будем продолжать думать таким образом, то только большее станет дышать. Не просто используйте Google, потому что это Google, и предположите, что все с ними (без сомнения, большинство с ними). Но пусть побеждают лучшие, сравнивают результат и идут с ними.
Маму
20
Это не предположение. Количество сайтов в топ-200 по Alexa с использованием CDN от Google превышает число Microsoft более чем в 100 раз. С точки зрения популярности кеширования, единственная точка зрения в пользу MS jQuery CDN - это то, что Microsoft.com использует ее, что дает ему много информации только по одной этой ссылке (но не настолько, как тысячи топ-сайтов, ссылающихся на Google). ).
Дейв Уорд
@DaveWard, можете ли вы убедиться, что это все еще так, или таблицы несколько изменились за последние несколько лет?
snupy
3
@snumpy: Google CDN немного оторвался от того, что я видел. Там нет ничего плохого с Microsoft CDN. Это быстро и имеет несколько файлов, которых нет у Google. Преимущество межсайтового кэширования зависит от охвата всей сети, и в этом отношении Google доминирует над всеми остальными.
Дейв Уорд,
Поскольку я перешел с jQuery CDN на Microeoft для хостинга jQuery Mobile, я перенес на него другие свои загрузки jQuery из Google, чтобы уменьшить количество обращений к DNS. Просто еще один фактор :)
Роб Грант
20

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

Оскар Килхед
источник
18

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

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

др.
источник
23
С тех пор, как это было написано, MS добавили jQuery-UI в свой CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Уилл Дин
15

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

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

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33,4 КБ

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26,5 тыс.

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

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

Alistair
источник
3
В то время это было хорошим возражением, но оно больше не применяется, поскольку рекомендуемое доменное имя CDN теперь ajax.aspnetcdn.com. Блокировка возражения * .microsoft.com также больше не применяется.
Стивен Кеннеди
это верно. рад, что они наконец исправили эту часть. Теперь я не расстраиваюсь по поводу включения плагина jquery validate / cycle из MS CDN.
Алистер
Куки-файлы больше не применяются из-за переключения на aspnetcdn.
Роб Грант
11

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

lod3n
источник
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> 
Джереми Кейд
источник
1
К сожалению, некоторые браузеры (IE6) не будут задерживать обработку этого онлайн-скрипта до тех пор, пока не будет загружен скрипт src =, так что это не будет работать должным образом. Хотелось бы!
Уолден Леверих
2
Итак, ваши пользователи IE6 испытывают немного медленный опыт. Хороший компромисс, если вы спросите меня. IE6 находится в упадке ... даже в корпоративных сетях.
Армстронгест
7

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

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

achairapart
источник
1
Да, но Twitter (согласно encosia.com/2010/09/15/… Дейва Уорда ) использует jQuery 1.3.0 (в «старом» Twitter), поэтому они не имеют
большого
Ну, сайты, которые я делал некоторое время назад, все еще используют jQuery 1.3.0, как (старый) Twitter. Это всегда важно.
achairapart
6

Потенциально один быстрее другого?

Мне самому было любопытно, поэтому я настроил тестовую страницу 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

Вот второй тест (еще 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

Энтони Хатзопулос
источник
4

Как утверждает Пингдом :

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

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

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

Mayank
источник
3

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

бесшумный
источник
Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
Фиона - myaccessible.website
1
Для Фионы это мой ответ на вопрос. Вопрос в том, «имеет ли это значение», мой ответ «это зависит от того, где находится его целевая аудитория», и я предоставил сайт для тестирования скорости из разных мест по всему миру, чтобы он мог решить, какой CDN использовать. Это не комментарий, это ответ.
тихо
3

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

Сертификат SSL на CDN Google не идет вразрез с этой конкретной проблемой (связанной с «Альтернативным именем субъекта сертификата»).

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

Кент Макнил
источник
2

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

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

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

Маму
источник
1

В заключение говорится, что Microsoft не предлагает пользовательский интерфейс, что не правильно (больше). Его можно загрузить по адресу http://www.asp.net/ajaxlibrary/cdn.ashx .

Netsi1964
источник
1

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

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

Спасибо


источник
1
возможно, немного не по теме, но интересный момент.
achairapart
1

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

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

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

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

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

bloudraak
источник
1

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

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

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

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

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

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

KnaveT
источник
-3

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

Поскольку хостинг 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, поскольку я не смог найти ссылку)

Wil
источник
6
JQuery никогда не будет определен, если вы не принесете его на свою страницу. Кэширование файла .js по умолчанию не делает его доступным для всех страниц браузера!
Фалькайн
1
Это работает: S Перечитайте скрипт - если он не определен, он пишет это и загружает?
Уил
12
Я никогда не понимал, почему люди делают «<scr» + «ipt ...»
анонимный трус
3
«В зависимости от браузера, количества другого предшествующего javascript и того, насколько правильно сформирован весь код, это делается для того, чтобы синтаксический анализатор не интерпретировал теги <script> и </ script> как исполняемый код, а не как строку быть написанным. "
SeanJA
2
Проблема в том, что jQueryон никогда не будет определен, если вы не загрузите его активно. В вашем скрипте всегда выполняется первая ветвь (если у вас нет другого включения jQuery выше), что делает скрипт излишним.
jensgram