Объединение, RequireJS и CDN — компенсируют ли они друг друга?

Я знаю, о чем вы все думаете: не может ли он просто использовать все 3? Да, я мог бы, но мой вопрос таков: не компенсируют ли они друг друга?

тл;др

  1. Делает ли пакетирование RequireJS устаревшим?
  2. Делает ли объединение CDN устаревшим?
  3. Если мне нужно сделать выбор между связкой или RequireJS+CDN, как мне определить, что использовать? Лучше всего использовать общие файлы CDN и объединять необычные? Как насчет файлов SPA?

Длинная версия

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

Итак, если мы объединим все наши JS-файлы в один, нужен ли RequireJS?

Кроме того, мы используем CDN, чтобы браузер мог получить доступ к кешированной версии, поэтому, если пользователь посещает 5 веб-сайтов, все из которых используют популярную CDN jQuery, т. е. http://cdn.com/jquery.min.js — браузеру фактически не нужно делать HTTP-запросы для этого файла на последних 4 сайтах, что намного быстрее, чем этот файл становится связанным. Если бы вместо этого каждый из этих сайтов обращался к уникальному связанному файлу из CDN — в соответствии с их потребностями — шансы «попадания» кеша стали бы намного ниже. И, поскольку вероятность «попадания» ниже, файл с меньшей вероятностью будет кэширован даже для людей, использующих этот сайт.

Помогает ли пакетный файл даже в CDN?


person Matt Johnson    schedule 05.05.2015    source источник


Ответы (2)


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

Многие разработчики используют RequireJS, чтобы иметь простой способ разделения задач без необходимости динамической загрузки модулей. У меня есть несколько приложений и библиотек, разработанных с помощью RequireJS. Одна из них — это библиотека, которая вообще не использует возможности динамической загрузки и не получит от них никакой пользы. Почти во всех сценариях использования этой библиотеки ее следует загружать как единый пакет, а не как набор модулей один за другим.

Это подводит меня к другому вопросу: решение не между между объединением или RequireJS. Вы можете использовать r.js (оптимизатор RequireJS) для объединения ваших модулей RequireJS в один файл для производства. Это может включать сторонние модули, если хотите. Или вы можете оставить их для обслуживания из CDN. Приложение можно оптимизировать для одного пакета или серии пакетов. Как и любой другой вопрос оптимизации, то, что следует делать, зависит от архитектуры конкретного рассматриваемого приложения.

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

person Louis    schedule 05.05.2015

Итак, если мы объединим все наши JS-файлы в 1, нужен ли вообще RequireJS?

Не все. Вас может заинтересовать миндаль.

Замена загрузчика AMD для RequireJS. Он обеспечивает минимальный размер AMD API, включая поддержку подключаемого модуля загрузчика. Полезно только для встроенных/связанных модулей AMD, не выполняет динамическую загрузку.

person ekuusela    schedule 05.05.2015