Прекомпиляция на месте ASP.NET не работает должным образом
Я пытаюсь использовать инструмент предварительной компиляции ASP.NET aspnet_compiler.exe для компиляции сайта после его развертывания.
В соответствии с определением книги, выполнение прекомпиляции на месте на веб-машине должно улучшить загрузку первой страницы. Инструмент компиляции компилирует каждую страницу ASP.NET, сохраняя скомпилированную версию в %WINDIR%\Microsoft.NET\Framework\v4.0.30319\Temporary
Папка ASP.NET Files точно так же, как если бы страницы посещались в первый раз из браузера. Предварительная компиляция на месте может ускорить выполнение первого запроса к вновь развернутым страницам ASP.NET на вашем сайте, поскольку это избавляет среду выполнения от необходимости выполнять этот шаг.
По какой-то причине для меня это не работает ожидаемым описанным способом.
При локальном запуске aspnet_compiler.exe на веб-машине вручную:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /7.1 -p C:\MyPathToWebSite\www
Создана папка следующей структуры:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\640c1f87\4be3507b
Когда я пытаюсь открыть веб-страницу с помощью браузера, ASP.NET создает другую кэшированную версию в следующей папке на том же сервере:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\bc8a1bb3\42b014d4
Как вы можете видеть, прекомпиляция работает в обоих сценариях (вручную и IIS), но почему-то IIS не видит, что страницы уже предварительно скомпилированы и обналичены, и пытается перекомпилировать все заново. Я не мог понять, что отсутствует или сделано неправильно, так как aspnet_compiler.exe имеет ограниченные параметры для компиляции на месте.
До сих пор я пытался во время тестирования / расследования в отношении временного кэша ASP.NET:
- Похоже, это не связано с пользователем, не имеет значения, какой пользователь работает вручную
- Не относится к исходному / целевому IP, так как одни и те же папки создаются на разных серверах в разных подсетях
Любые идеи и помощь приветствуются.
2 ответа
Я столкнулся с той же проблемой. Только с помощью метабазы путь к моему сайту решен.
aspnet_compiler.exe -m /LM/W3SVC/[site ID]/root
Файлы, которые вы видите в первой папке, не были объединены. Вы только компилируете свой сайт в MSIL, и когда вы впервые получаете доступ к некоторой странице, она компилируется с собственным кодом изображения - это файлы, которые вы видите во второй папке. Возможно, вы захотите использовать Ngen - http://msdn.microsoft.com/en-us/library/6t9t5wcf%28v=vs.110%29.aspx