Групиране, RequireJS и CDN – компенсират ли се взаимно?

Знам какво си мислите всички, не може ли просто да използва всичките 3? Да, бих могъл, но въпросът ми е следният: не се ли унищожават взаимно?

tl;dr

  1. Прави ли пакетирането RequireJS остарял?
  2. Прави ли пакетирането CDN остарели?
  3. Ако трябва да направя избор между групиране или RequireJS+CDN, как да определя кой да използвам? Най-добрата практика ли е CDN общи файлове и групиране на необичайни? Какво ще кажете за SPA файловете?

Дългата версия

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

Така че, ако обединим всички наши JS файлове в 1, необходим ли е RequireJS?

Освен това използваме CDN, така че браузърът да има достъп до кеширана версия, така че ако потребителят посети 5 уебсайта, всички от които използват популярна jQuery CDN - т.е. 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