我正在使用 Visual Studio 2008 上的 Web 部署项目部署一个预编译和所有页面合并的网站。请注意,所有程序集和项目都已在发布模式下编译。
我所有的页面都是在发布模式下预编译的。所以它们不会被重新编译,它们只会被运行时加载。在那种不需要页面编译的情况下,<compilation debug="true">
system.web中的设置会有什么不同吗?
我正在使用 Visual Studio 2008 上的 Web 部署项目部署一个预编译和所有页面合并的网站。请注意,所有程序集和项目都已在发布模式下编译。
我所有的页面都是在发布模式下预编译的。所以它们不会被重新编译,它们只会被运行时加载。在那种不需要页面编译的情况下,<compilation debug="true">
system.web中的设置会有什么不同吗?
查看以下优秀链接:
基本上:
以上都不是可取的。您会在上述链接中发现更多缺点。
根据文档:
指定是否编译调试二进制文件而不是零售二进制文件
但是,刚刚通过 System.Web 快速反映,我可以看到调试标志被以下使用(直接或间接):
因此,如果您的网站是预编译的,您将不会收到性能损失。但是,由于 HttpApplication 将响应 DEBUG http 动词,因此您将面临安全问题。
简而言之,设置 debug=false,即使您的站点是预编译的。
编辑: debug=true 将导致缓存性能(参见 Mehmet Aras 的回答)命中并且没有执行超时,但它不会降低编译页面的执行速度。
来自博客文章ASP.Net – 再也不用担心使用 debug=true 发布您的网站:
这篇文章继续建议设置生产服务器 machine.config 以确保强制零售部署模式,这本质上意味着调试总是错误的。