У нас есть пара крупных решений, каждое из которых имеет около 40 отдельных проектов (библиотеки классов и вложенные веб-сайты). Для полной перестройки всего требуется около 2 минут.
Пара спецификаций в системе:
- Visual Studio 2005, C #
- Основной проект - это проект веб-приложения
- Мы используем внутренний веб-сервер VS
- Мы широко используем пользовательские элементы управления, вплоть до пользовательского элемента управления, который содержит текстовое поле
- У нас есть несколько встроенных веб-проектов, которые позволяют нам выполнять частичное развертывание
- Около 120 пользовательских элементов управления
- около 200 000 строк кода (включая HTML)
- Мы используем Source Safe
То, что я хотел бы знать, это как сократить время, которое требуется при первом посещении сайта браузером. И я не говорю о полном развертывании - я говорю о небольших изменениях в коде, сборке, обновлении браузера.
Этот первый удар занимает около 1 минуты 15 секунд, прежде чем данные вернутся.
Чтобы ускорить процесс, я немного поэкспериментировал с Ram-дисками, в частности изменив атрибут в web.config, установив tempDirectory для моего Ram-диска.
Это немного ускоряет процесс. Интересно, что это полностью исключило ВСЕ доступ к IO при первом обращении из браузера.
Примечания
Мы никогда не делаем полную компиляцию во время разработки, только частичную. Например, библиотека классов, над которой работает, компилируется, а затем компилируется основной сайт, который затем копирует двоичные файлы из библиотеки классов в каталог bin.
Я понимаю, что движку asp.net необходимо проанализировать все файлы ascx / aspx после изменения критических файлов (например, bin dir), но я не понимаю, почему он должен это делать, когда только 1037 * одна библиотека dll была изменена.
Итак, кто-нибудь знает способ:
Подсегментные решения, обеспечивающие более быструю настройку первого попадания или точную настройку в файлах конфигурации или в других областях.
И, опять же: я говорю только о разработке, а не о производственном развертывании, поэтому использование предварительно скомпилированного параметра не применимо.
Спасибо, Руван