ASP.NET'总是在编译'。 Noob问题

时间:2011-03-03 08:28:21

标签: asp.net benchmarking

我正在和一个男人说话,他说他喜欢他的网站用asp而不是asp.net,因为它“总是在编译”。我知道aspx是编译的,并且与dll中的主应用程序是分开的。但他总是在“编译”的意思是什么?我认为它会在启动时编译一次,如果你完全修改,你修改aspx文件的所有内容。

但无论如何,服务器端ASP.NET的性能与php,python,ruby和java等其他产品相比如何?

4 个答案:

答案 0 :(得分:3)

你说得对,ASP.NET在以下某个事件之后点击页面时动态编译ASPX网页并缓存生成的二进制文件

  • IIS应用程序池已被回收
  • bin文件夹
  • 中进行了更改
  • Web.config文件
  • 中进行了更改

这个动态编译阶段自然会有页面响应的价格。但是仅影响第一个请求进入特定页面,而它代表了以下请求的性能巨大优势,因为它们是缓存的 编译版本的页面。

第一页请求支付的性能损失可以通过提前执行ASP.NET编译和缓存步骤来缓解。此技术称为web site precompilation,通过.NET Framework中包含的名为ASP.NET Compilation Tool (Aspnet_compiler.exe)的命令行工具完成。

相关资源:

答案 1 :(得分:2)

非常普遍....

“代码隐藏”文件是事先编译的,通常包含大部分“你的”代码。

aspx本身也编译,但通常不提前,这可能是他说“总是编译”的原因。每个页面都根据需要进行编译,编译后的版本缓存在临时文件中,直到需要再次编译为止。

答案 2 :(得分:1)

在某些情况下,如果网站有罕见的请求且应用程序池的空闲超时(在iis中)非常短(例如1分钟),那么

'总是编译'的asp.net是可能的。你可以注意到第一个请求需要很长时间(大约甚至几秒钟),但是在第一次编译之后它会非常快地运行。

速度测试 - http://www.wrensoft.com/zoom/benchmarks.html

答案 3 :(得分:0)

由于asp(不是ASP.NET)是像php这样的脚本语言,所以每次都会编译。

在ASP.NET中,您必须区分表示项(aspx页/视图)和纯代码项(后面的类/代码等)。

通常,.NET中的编译意味着将代码编译为IL(中间语言或更一般地说:字节代码)。 当实际使用这样的编译组件时,它再次编译成实际的机器代码 此过程称为“Just In Time”(JIT)编译。

演示
演示页面在第一次访问时进行编译。但是,当您的Web服务器被修改时会注意到它们并再次重新编译它们。

代码 事实上,代码项只能编译一次。当你在VS中点击构建时。

那么这意味着什么呢?好好想一想,从用户可读的代码到机器代码,或者从已经接近机器代码到实际机器代码的字节代码,这是更进一步的方法吗? 我会在任何一天和以后一起使用ASP.NET,因为ASP.NET总是被证明更快。

是。绝对第一次访问页面时可能需要更长时间,但这不是您应该考虑的情况,它应该是您应该考虑的第10和第20位访问者。