<compilation debug = "true" > в предварительно скомпилированном веб-сайте asp.net - Это имеет значение?
Я развертываю предварительно скомпилированный и полностью связанный с веб-сайтом веб-сайт с использованием проектов веб-развертывания в Visual Studio 2008. Обратите внимание, что все сборки и проекты были скомпилированы в режиме выпуска.
Все мои страницы предварительно скомпилированы в режиме выпуска. Поэтому они не будут перекомпилированы, они будут загружены только во время выполнения. В этом случае, когда компиляция страницы не требуется, установка <compilation debug="true">
в system.web будет иметь значение?
Ответы
Ответ 1
Ознакомьтесь с отличными ссылками ниже:
В принципе:
- Ваш код будет работать медленнее из-за накладных расходов на поддержку отладки.
- Сценарии и изображения не кэшируются с клиентской стороны, потому что вы не хотите, чтобы в кеширование было включено кэширование, если вы постоянно вносите изменения и отлаживаете.
- Запросы не установлены. Опять же, когда вы отлаживаете свой код, вы не хотите получать таймаут запроса.
Ничего из вышеперечисленного не желательно. Вы найдете больше недостатков в приведенных выше ссылках.
Ответ 2
В соответствии с документация:
Указывает, следует ли компилировать двоичные файлы отладки, а не файлы розничной торговли
Однако, только что быстро отразившись через System.Web, я вижу, что флаг отладки используется (прямо или косвенно) следующим образом:
- Компиляция времени выполнения (ASPX/ASCX/MASTER)
- Генерация кода файлов возможностей браузера
- HttpDebugHandler, который используется во время сеанса отладки
В результате, если ваш сайт предварительно скомпилирован, вы не получите удар производительности. Однако, поскольку HttpApplication ответит на HTTP-глагол DEBUG, вы откроете себе проблемы с безопасностью.
Короче говоря, установите debug = false, даже если ваш сайт предварительно скомпилирован.
Изменить: debug = true приведет к результату (см. ответ Mehmet Aras) для кэширования и отсутствия времени выполнения, но это не уменьшит скорость выполнения для скомпилированных страниц.
Ответ 3
Из сообщения в блоге ASP.Net - Никогда не опасайтесь публиковать свой сайт с помощью debug = true:
- Компиляция страниц ASP.NET занимает больше времени (при отключении пакетной компиляции)
- Обычно код выполняется медленнее
- Увеличен объем памяти.
- Сценарии и изображения, загруженные с помощью обработчика WebResources.axd, не кэшируются.
- Запросы не тайм-аут (это плохо, как в производственной среде, мы не хотим, чтобы запросы зависали бесконечно)
В статье далее рекомендуется установить рабочий сервер machine.config, чтобы обеспечить принудительный режим розничного развертывания, что по сути означает, что отладка всегда неверна.