Мы используем веб-сервер Mono (2.10) XSP4 для размещения веб-приложения ASP.Net MVC3, работающего на открытом встроенном Linux (ARM). При запуске XSP4 требуется несколько секунд, пока он не будет готов и не примет запросы. С этим проблем пока нет.
Но когда делается первый запрос от браузера/посетителя веб-сайта, XSP4 использует весь ЦП, который он может получить, в течение примерно 55 секунд, пока веб-страница не будет (успешно) показана в веб-браузере. Это происходит после каждого запуска/перезапуска XSP.
Моей первой мыслью было, что это своевременная компиляция всего веб-приложения. Поэтому я создал пакет развертывания, который содержит только двоичные файлы, .css, .js и представления (.cshtml). Это сработало, но все еще была эта огромная задержка.
Затем я попытался предварительно скомпилировать это веб-приложение с помощью Visual Studio (как указано в некоторых примечаниях к выпуску Mono). Веб-сайт снова работал хорошо, но огромная задержка все еще присутствовала.
Некоторые вопросы, которые на самом деле у меня в голове:
- Кто-нибудь знает, что делает веб-сервер XSP, когда приходит первый запрос браузера? Является ли это своевременной компиляцией, даже если это предварительно скомпилированное веб-приложение?
- Почему он делает это после каждого запуска снова?
- Можно ли вообще как-то уменьшить огромную задержку?
- Можно ли уменьшить огромную задержку, чтобы она выполнялась только при первом запросе браузера после обновления веб-приложения (кэшируется между последующими запусками XSP)?
Любая помощь/идеи были бы замечательными.
Обновление: Тем временем я обнаружил, что задержка вызвана сборкой dcms компилятором Mono/ASP.Net и компиляцией бритвенных представлений MVC3 в /tmp/root-aspnet.../, который сопоставляется с памяти и, следовательно, не является постоянным. Сейчас я ищу способ контролировать, где XSP4/Mono.WebServer/Mono-Asp.Net хранит эти скомпилированные файлы. Если кто-то знаком с этим, дайте мне знать ;-)