Comments 12
Действительно. Спасибо за замечание, так будет лучше:
private static string[] Exclude(this IEnumerable<string> input, params string[] items)
{
return input.Except(items).ToArray();
}
Я правильно понял, что один файл может попасть в разные бандлы и пользователь грузит один код множество раз?
UPD:
И как работаете с CDN?
UPD:
И как работаете с CDN?
Обычно количество лэйаутов не очень большое. Да, пользователю придется несколько раз выкачать повторяющийся код. Но мне не кажется, что это большая проблема, для небольшого количества лэйаутов.
А что касается CDN, да, с таким подходом от него придется отказаться.
А что касается CDN, да, с таким подходом от него придется отказаться.
По поводу CDN рекомендую вам прочитать следующие материалы: «Bundling and Minification» и «Microsoft ASP.NET Web Optimization 1.1.0 Release Notes».
А я вот отказался в своё время от майкрософтовского подхода к бандлам и заюзал это github.com/ServiceStack/Bundler. Никаких зависимостей в runtime и очень простенько (кстати, расширение WebEssensials для студии тоже умеет делать бандлы по файлам где описаны что в бандл включить). Как вариант использовать grunt uglify или подобное для иных сборщиков из «мира» front-end-а.
1. На каждый лэйаут — 1 бандл.
2. Бандлы подключаются только на лэйаутах.
3. Вводим понятие групп, которое будет являться просто массивом строк.
Нужно понимать, что при первоначальной обработке каждого бандла (например, минимизации) расходуются ресурсы процессора и память. Кроме того, код обработанных бандлов кэшируется в памяти веб-сервера. Таким образом, при использовании вашего подхода возникает лишняя нагрузка на сервер.
Классические подходы позволяют более эффективно использовать серверный и браузерный кэш. Если они не подходят вам, то используйте RequireJS.
Sign up to leave a comment.
Не даем бандлам испортить вам жизнь