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

Загружать файлы с одного CDN или нескольких CDNS

На типичной веб-странице я загружаю следующее: все из CDN:

  • JQuery
  • Angular
  • Bootstrap
  • Icomoon
  • несколько плагинов Angular

Лучше ли загружать их с 1 CDN (если возможно) или с разных CDN? Есть ли лучшие практики для этого, или это не имеет значения?

4b9b3361

Ответ 1

В терминах использования одного или нескольких CDN это не будет проблемой в зависимости от того, сколько компонентов вы загружаете из одного и того же имени хоста, в соответствии с этим статья из Team UI Team, HTTP/1.1 предполагает, что браузеры должны ограничивать параллельные загрузки до двух для имени хоста. Поэтому, используя несколько источников CDN, это разные хосты должны быть хорошей практикой.

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

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

Как отмечалось в комментариях @JeffPuckett, браузеры имеют более высокий предел одновременной загрузки на сервер/прокси сегодня:

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Chrome:     6

Ref.: fooobar.com/questions/19557/...

Ответ 2

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

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

Исходя из этой цели, имеет смысл

  • Загрузка популярных библиотек из популярных CDN (s), которая зависит от списка библиотек, может быть одним и тем же CDN или разными CDN. Я бы сказал, что количество параллельных HTTP-соединений браузера является вторичным аргументом.
  • Включение и сворачивание пользовательских сценариев и редко используемые сторонние библиотеки в виде нескольких файлов, которые имеют смысл (например, один CSS и один JS), и загрузка с вашего собственного хоста или собственного CDN (если у вас много пользователей из разных мест или даже континенты CDN, вероятно, не роскошь для вас).
  • Если скрипты на основе CDN не были загружены из CDN по какой-либо причине, вернитесь к локальной копии.
  • Если у вас есть этот параметр, выберите наиболее часто используемую версию библиотек, которая, скорее всего, не самая последняя.

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

Для статистики вы можете использовать что-то вроде w3techs:

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

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

Это может показаться неприятным, но редко (если не один раз), поскольку статистика, как правило, меняется довольно медленно.

Ответ 3

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

bundles.UseCdn = true;
bundles.Add(new ScriptBundle("~/bundles/jquery",
@"//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js"
).Include(
"~/Scripts/jquery-{version}.js"));

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

Ответ 4

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

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

Ответ 5

Хороший вопрос, чтобы начать спрашивать, что большинство браузеров поддерживают HTTP2: поддерживает ли мой CDN HTTP2? Если это так, то вероятность того, что конвейерная обработка этих запросов через 1 CDN будет быстрее. Он также может сохранять запросы DNS, если другие CDN еще не кэшированы. Если CDN поддерживает push, это также может увеличить скорость, поскольку для многих из этих библиотек требуется несколько файлов.

Ответ 6

Лучшей практикой является использование как CDN, так и резервного (Local Files). Чтобы ответить на ваш вопрос, вы должны использовать несколько путей CDN, как если бы один CDN был выключен, по крайней мере, остальные работали и работали. Для down CDN резервные системы будут тренироваться.

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

Ответ 7

Вы можете легко использовать cdn для получения данных

Ответ 8

Вы должны стараться избегать использования CDN как: -

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

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

Рекомендация -

Пользователь Bower/Grunt или Webpack в вашем приложении -

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

Если у вас есть какие-либо сомнения относительно bower/grunt, я могу вам помочь в этом.