Должен ли я связывать фреймворк javascript с моим приложением или использовать публичный CDN?

Около двух или трех лет назад я бы резюмировал ответ на этот вопрос как.

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

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

Что в настоящее время является лучшей практикой для веб-производительности при включении статических ресурсов.

Когда я использую фреймворк, такой как angular, backbone или ember, должен ли я связывать фреймворк с моим приложением или использовать общедоступный cdn (например, googles https://developers.google.com/speed/libraries/) и просто связать код моего приложения?


person errm    schedule 30.01.2015    source источник


Ответы (1)


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

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

Для внешних приложений я бы сказал, что использование CDN — правильный выбор.

person DoctorMick    schedule 30.01.2015
comment
Не могли бы вы сказать, что есть какие-то плюсы в использовании одного из общедоступных cdns для этих библиотек, а не что-то вроде облачного фронта или кеша? - person errm; 31.01.2015
comment
Я бы подумал, что вероятный капот файла, уже кэшированного из популярной банки, намного выше. - person DoctorMick; 31.01.2015