Между этими двумя подходами есть небольшая серая зона. Вы можете настроить Discourse так, чтобы он отдавал ресурсы, включая JS-скрипты тем и плагинов, через CDN. Таким образом, даже если ваш плагин загружает внешнюю библиотеку из /vendor, она будет подгружаться с CDN, который вы настроили в Discourse. Однако это частный CDN.
Тем не менее, я не думаю, что речь идёт именно об этом. Вы имеете в виду такие сервисы, как https://cdnjs.com и https://www.jsdelivr.com, а это уже несколько другая тема — публичный CDN.
Сервисы вроде cdnjs обладают широкой сетью серверов, специально предназначенных для таких задач.
Так что,
Они могут быть быстрее и действительно помогают снизить нагрузку на ваш сервер.
Но… эта выгода в скорости доступна и в том случае, если вы используете /vendor на сайте, где Discourse настроен на использование частного CDN.
Кроме того, что касается пропускной способности: большинство внешних JS-библиотек весят менее 20 КБ. Поэтому, хотя экономия и есть, это не является существенным фактором, если только ваш сайт не получает сотни тысяч просмотров в день.
Одно из преимуществ использования таких сервисов, как cdnjs, заключается в том, что они отдают один и тот же файл и устанавливают заголовки кэширования.
Что это значит? Возьмём, к примеру, jQuery.
Многие сайты используют jQuery, и многие из них используют cdnjs для его доставки. Когда cdnjs отдаёт файл jQuery пользователю, он включает заголовки кэширования — по умолчанию на 1 год.
Это означает, что если пользователь посетит сайт А, использующий cdnjs для jQuery, а затем зайдёт на сайт Б, который также использует тот же файл той же версии, его браузер не будет снова загружать jQuery, так как он уже закэширован. Это приводит к более быстрой загрузке страниц.
Указанный выше момент является главным преимуществом использования таких сервисов, как cdnjs, для ваших внешних библиотек.
Однако очень немногие библиотеки так же распространены, как jQuery, поэтому всё зависит от того, насколько популярна конкретная библиотека.
При загрузке файлов с cdnjs также необходимо убедиться, что вы добавили их в настройки CSP.
Так что, пожалуй, ответ здесь таков: всё зависит от ситуации.
Загружаете ли вы библиотеку в её исходном виде?
Насколько она распространена?
Имеет ли она большой размер?
Если да, то возможно, стоит использовать CDN. Если нет, лучше сохранить простоту и просто добавить её в /vendor.
