Ответы:
Обновление на основе комментариев:
Короткая версия: это не имеет большого значения, но это может зависеть от того, что они размещают. Все они размещают разные вещи: 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, который мы используем для:
Наш сервер:
Так как часть нашего процесса сборки объединяет и минимизирует весь пользовательский 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 может предложить несколько хороших советов, чтобы помочь.
Вы должны обязательно использовать Google CDN для jQuery (и это исходит от Microsoft-ориентированного разработчика).
Это простая статистика. Те, кто рассматривает возможность использования MS CDN для jQuery, всегда будут в меньшинстве. Слишком много разработчиков, не использующих MS, используют jQuery, которые будут использовать Google и даже не захотят использовать Microsoft. Поскольку одним из главных преимуществ использования общедоступных CDN является улучшенное кэширование , разделение использования между несколькими CDN снижает потенциальную выгоду.
Google отправит вам версию jQuery, минимизированную с помощью собственного программного обеспечения, эта версия на 6 КБ легче, чем стандартная минимизированная версия, обслуживаемая MS. Перейти на Google.
Следует учесть, что обе компании предлагают немного разные «дополнительные» библиотеки:
В зависимости от ваших потребностей это может быть актуально.
Следует также отметить, что, поскольку 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.
Возможно, это не имеет значения, но вы можете проверить это с помощью некоторого 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. Я проверял:
Кто был самым быстрым: 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
Вот второй тест (еще 3 каждый):
Видео: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74
Как утверждает Пингдом :
Когда кто-то посещает ваш сайт, если он уже посетил другой сайт, который использует тот же файл jQuery в том же CDN, файл будет кэширован и его вообще не нужно загружать. Это не может быть быстрее, чем это.
Это означает, что наиболее часто используемые CDN будут иметь шансы на стороне, которые могут окупиться для вашего сайта.
Несколько замечаний о производительности: CDN от Google неизменно является самым медленным из трех в Северной Америке и Европе. В Европе CDN от Microsoft является самой быстрой.
Я думаю, это зависит от того, где находится ваша целевая аудитория. Вы можете использовать alerttra.com для проверки скорости CDN во многих точках мира.
Еще одно соображение - если ваш сайт поддерживает 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.
Мой ответ немного отличается от других, я пойду с Microsoft, если вам нужен валидатор jquery, который нужен почти всем, если вы используете jquery.
Соединение Microsoft CDN http является Keep-Alive, что является большим плюсом, когда вы запрашиваете несколько элементов.
Поэтому, если вам нужна проверка jquery, используйте Microsoft CDN, даже если вам нужен jquery ui, используйте Microsoft, потому что Google не поддерживает keep-alive, поэтому каждый запрос выполняется самостоятельно. поэтому смешивание таким образом является плюсом. Если вы используете Microsoft только для валидатора, то вы делаете отдельное соединение с сервером Google для каждого запроса.
В заключение говорится, что Microsoft не предлагает пользовательский интерфейс, что не правильно (больше). Его можно загрузить по адресу 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 Analytics в защищенное приложение, браузер по-прежнему отправляет текущий URL-адрес в качестве заголовка «referer». Любые идентификаторы, например, идентификатор сеанса или секретный токен, могут появиться в их журналах. Например, если IP-адрес клиента 192.0.2.5 ссылается на https: //healthsystem.example/condition/impotence , то вы можете вывести информацию, которая считается довольно закрытой.
Другие случаи включают информацию о последствиях, такую как номер счета, номер социального страхования или информацию о сеансе в URL. Такого рода данные никогда не должны быть в URL, так как они могут использоваться за пределами приложения.
Хотя вы можете доверять Google, Microsoft или Yahoo, ваши пользователи не могут.
Для таких отраслей, как финансы, юриспруденция и здравоохранение, вы можете создать свой собственный CDN с помощью поставщика (например, Akamai), с которым вы можете подписать BAA.
Я бы посоветовал вам основывать свое использование на общем расположении целевых пользователей.
Если ваш сайт предназначен для широкой публики, то использование CDN Google будет хорошим выбором.
Если ваш сайт также ориентирован на Китай, то лучше использовать CDN от Microsoft. По своему опыту я знаю, что серверы Google постоянно блокировались правительством Китая, что делало веб-сайты, которые их используют, не загружаемыми.
* Обратите внимание, что вы можете создать отдельные сайты, например cn.mysite.com, специально для Китая, но если у вас мало ресурсов и времени, это стоит рассмотреть.
Полный список Microsoft CDN здесь. http://www.asp.net/ajaxlibrary/cdn.ashx
С тех пор они были переименованы в ajax.aspnetcdn.com , что снижает вероятность блокировки правилами брандмауэра.
Я бы использовал оба!
Поскольку хостинг 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, поскольку я не смог найти ссылку)
jQuery
он никогда не будет определен, если вы не загрузите его активно. В вашем скрипте всегда выполняется первая ветвь (если у вас нет другого включения jQuery выше), что делает скрипт излишним.