Прямой ответ
1) Да, 20 запросов на скрипты на каждой странице значительно снизят производительность для клиентов - для получения дополнительной информации см. Документы Yahoo / Google по веб-оптимизации
Кэширование в браузере помогает, но его так легко сделать лучше.
2) Зачем накатывать свое собственное решение на зависимости?
Существует множество превосходных библиотек, которые делаютэто уже хорошо - с преимуществами?
По глубине:
Аналогично предложению от @Mare, но, думаю, с некоторыми приличными преимуществами - я бы рекомендовал немного изменить ваш подход.Refactor!
Рассмотрим следующие основные вопросы:
1) Зачем писать HTML в файлах .cs?
=> гораздо лучше сохранитьВаш HTML в файлах aspx / ascx (или другой движок представления) проверить редактор и шаблоны отображения, например,
Введение Брэда Уилсона в шаблоны
т.е. комментарий от @admsteck выше
2) зачем писать Javascript в файлах .cs?
=> гораздо лучше хранить ваш Javascript в файлах .js
3) Также обратите внимание - зачем использовать методы расширения HtmlHelper, если вы не используете какую-либо информацию о состоянии из класса HtmlHelper?
=> Для простого решенияпочему бы вместо этого просто использовать статический вспомогательный класс (не расширение HtmlHelper) см. этот ответ здесь
Но в основном:
4) ЕслиВы беспокоитесь о производительности, почему бы не минимизировать и не объединить все ваши скрипты (и CSS, пока вы на нем).
=>Тогда вы можете иметь один маленький CSS-файл и один JS-файл для всего вашего приложения.
Однако, 4) затем приводит к некоторым дополнительным вопросам:
a) Как выdebug комбинированный + минимизированный JS
б) Как эффективно работать с комбинированным + «минимизированным» CSS?
c) Чтобы сосредоточиться на исходном запросе о чистом способе обработки зависимостей, как убедиться, что он четко определяет, какой код зависит от какого кода, и как вы гарантируете, что код запрашивается только один раз, когда это необходимо?
Я обнаружил, что эта библиотека с открытым исходным кодом Client Dependency Framework является отличным дополнением к моему инструментарию для MVC, когда при отладке вы получаете отдельные файлы, при запуске вы получаете комбинированные файлы(для значительного увеличения производительности при работе).
Он также предоставляет отличный способ для ваших компонентов пользовательского интерфейса "регистрировать" свои зависимости , поэтому разработчикам становится ясно, что нужно, гдеи поэтому правильный js + правильный css попадает к клиенту (и запрашивается только один раз)!