При запуске приложения ASP.NET происходит довольно много начальной загрузки. Это включает в себя запуск рабочего процесса, сборок, загруженных в AppDomain
, а также компиляцию файлов в текущем каталоге. Этот процесс пакетной компиляции выполняется для каждой папки, что означает, что если я запрашиваю /
в первый раз, пакетный компилятор просканирует папку на наличие поддерживаемых типов, скомпилирует их и кеширует результат. Это делается только в корневой папке /
. Мой первый запрос к другой папке /OffRoot
приведет к другой пакетной компиляции.
Если у вас есть предварительно скомпилированный сайт, среда выполнения все еще выполняет этот тип сканирования, но определяет, что ему не нужно ничего компилировать.
Существует важное различие между предварительно скомпилированным веб-сайтом и скомпилированным веб-приложением. Предварительно скомпилированный веб-сайт будет выполнять эту компиляцию первого экземпляра заранее, поэтому он должен загружать сборки только в AppDomain
там, где это необходимо. В скомпилированном веб-приложении вы скомпилировали базовый исходный код, но файлы представлений (.aspx
) не скомпилированы, поэтому он по-прежнему выполняет компиляцию в первый раз (динамическая компиляция).