<compilation debug = "true"> на предварительно скомпилированном веб-сайте asp.net - это имеет значение? - PullRequest
14 голосов
/ 29 апреля 2009

Я развертываю предварительно скомпилированный веб-сайт с объединением всех страниц с использованием проектов веб-развертывания в Visual Studio 2008. Обратите внимание, что все сборки и проекты были скомпилированы в режиме выпуска.

Все мои страницы предварительно скомпилированы в режиме релиза. Таким образом, они не будут перекомпилированы, они будут просто загружены во время выполнения. В том случае, когда компиляция страницы не требуется, настройка <compilation debug="true"> в system.web будет иметь значение?

Ответы [ 3 ]

26 голосов
/ 29 апреля 2009

Проверьте отличные ссылки ниже:

В основном:

  • Ваш код будет работать медленнее из-за накладных расходов на поддержку отладки.
  • Скрипты и изображения не кэшируются на стороне клиента, поскольку вы не хотите, чтобы в процессе разработки кэшировались объекты, если вы постоянно вносите изменения и отлаживаете.
  • Количество запросов не истекло. Опять же, когда вы отлаживаете код, вы не хотите получать тайм-аут запроса.

Ничего из вышеперечисленного не желательно. Вы найдете больше недостатков в приведенных выше ссылках.

2 голосов
/ 29 апреля 2009

Из поста в блоге ASP.Net - Никогда не бойтесь публиковать ваш сайт с debug = true :

  • Компиляция страниц ASP.NET занимает больше времени (поскольку пакетная компиляция отключена)
  • Код обычно выполняется медленнее
  • Объем памяти увеличен
  • Скрипты и изображения, загруженные из обработчика WebResources.axd, не кэшируются
  • Количество запросов не истекает (это плохо, так как в производственной среде мы не хотим, чтобы запросы зависали на неопределенное время)

Далее в статье рекомендуется настроить рабочий сервер machine.config, чтобы обеспечить принудительный режим развертывания в розничной торговле, что по сути означает, что отладка всегда ложна.

2 голосов
/ 29 апреля 2009

Согласно документации :

Указывает, компилировать ли отладочные двоичные файлы вместо розничных двоичных файлов

Однако, только что быстро отразившись через System.Web, я вижу, что флаг отладки используется (прямо или косвенно) следующим образом:

  • Компиляция во время выполнения (ASPX / ASCX / MASTER)
  • Генерация кода файлов возможностей браузера
  • HttpDebugHandler, который используется во время сеанса отладки

В результате, если ваш сайт предварительно скомпилирован, вы не получите снижение производительности. Однако, поскольку HttpApplication ответит на HTTP-глагол DEBUG, вы откроетесь перед проблемами безопасности.

Короче, установите debug = false, даже если ваш сайт предварительно скомпилирован.

Редактировать: debug = true приведет к снижению производительности (см. Ответ Мехмета Араса) для кэширования и без таймаута выполнения, но это не уменьшит скорость выполнения для скомпилированных страниц.

...