2010-07-07 4 views
2

У нас есть эта проблема, но мы не можем найти решение. У нас есть приложение, которое ссылается на что-то вроде 24 DLL. Когда вы вызываете приложение в первый раз (после того, как приложение по какой-либо причине сброшено), для загрузки содержимого требуется 25-40 секунд.asp.net веб-приложение время запуска. как оптимизировать?

Это то, что мы пытались: 1. прекомпиляцию и публиковать все, что в режиме выпуска 2. удаление PDB-файлы из папки бин 3. поместить сильные именованные сборки в GAC 4. набор приложений для отладки = ложным

Пожалуйста, учтите, что вся папка bin состоит из 24 библиотек DLL для общего размера 28 МБ. Только 4 из этих библиотек сильно названы, и они все больше и меньше 25 МБ.

Ничего не изменилось. Что происходит ТОЧНО, когда приложение запускается, это то, что я не мог найти ни в одной книге, ни в форуме/блоге/сообщении ... Что мы можем отслеживать больше, чтобы найти, где проблема?

Большое спасибо за вашу помощь, Marco

ответ

0

Похоже, вы должны будете использовать NGEN ...

Генератор Native Image (Ngen.exe) является инструментом, который улучшает Производительность управляемых приложений. Ngen.exe создает собственные изображения, которые являются файлами, содержащими скомпилированный код машинного кода , и устанавливает их в собственное изображение кэш на локальном компьютере. Сценарий может использовать собственные изображения из кеша вместо использования компилятора точно в момент времени (JIT) для компиляции оригинальной сборки .

Прекомпиляция сайт для развертывания с использованием фиксированных имен, развертывание решения на сервер, а затем NGEN все узлы в бункере

MSDN article on NGen.

+0

Хорошо, спасибо Даниил. Я знаю о JIT, но мне кажется абсурдным, что у меня есть 10 из этих приложений, работающих на моем рабочем сервере, и каждое из этих приложений ссылается на 5 Dll, которые находятся в GAC. Возможно ли, что компилятор JIT компилирует EACH DLL, на который ссылается приложение, даже если оно было скомпилировано ранее для другого приложения? Я имею в виду следующее: предположим, что приложение A ссылается на Test.dll в GAC. Приложение B ссылается на Test.dll тоже. Когда я попал в первое приложение A, JIT берет Test.dll и компилирует его. Когда я попал в первый раз, приложение B тоже слишком медленное ... – Marconline

+0

О aspnet_compiler.exe Я думаю, что это то, что Visual Studio 2010 делает, когда я публикую свое приложение. Я ошибаюсь? – Marconline

+0

Извините, вы правы. Я был совершенно невредим. Я отредактировал свой ответ соответственно. –

Смежные вопросы