我正在和一个男人说话,他说他喜欢他的网站用asp而不是asp.net,因为它“总是在编译”。我知道aspx是编译的,并且与dll中的主应用程序是分开的。但他总是在“编译”的意思是什么?我认为它会在启动时编译一次,如果你完全修改,你修改aspx文件的所有内容。
但无论如何,服务器端ASP.NET的性能与php,python,ruby和java等其他产品相比如何?
答案 0 :(得分:3)
你说得对,ASP.NET在以下某个事件之后点击页面时动态编译ASPX网页并缓存生成的二进制文件:
bin
文件夹Web.config
文件这个动态编译阶段自然会有页面响应的价格。但是仅影响第一个请求进入特定页面,而它代表了以下请求的性能巨大优势,因为它们是缓存的 编译版本的页面。
第一页请求支付的性能损失可以通过提前执行ASP.NET编译和缓存步骤来缓解。此技术称为web site precompilation,通过.NET Framework中包含的名为ASP.NET Compilation Tool (Aspnet_compiler.exe)的命令行工具完成。
相关资源:
答案 1 :(得分:2)
非常普遍....
“代码隐藏”文件是事先编译的,通常包含大部分“你的”代码。
aspx本身也编译,但通常不提前,这可能是他说“总是编译”的原因。每个页面都根据需要进行编译,编译后的版本缓存在临时文件中,直到需要再次编译为止。
答案 2 :(得分:1)
'总是编译'的asp.net是可能的。你可以注意到第一个请求需要很长时间(大约甚至几秒钟),但是在第一次编译之后它会非常快地运行。
答案 3 :(得分:0)
由于asp(不是ASP.NET)是像php这样的脚本语言,所以每次都会编译。
在ASP.NET中,您必须区分表示项(aspx页/视图)和纯代码项(后面的类/代码等)。
通常,.NET中的编译意味着将代码编译为IL(中间语言或更一般地说:字节代码)。 当实际使用这样的编译组件时,它再次编译成实际的机器代码 此过程称为“Just In Time”(JIT)编译。
演示
演示页面在第一次访问时进行编译。但是,当您的Web服务器被修改时会注意到它们并再次重新编译它们。
代码 事实上,代码项只能编译一次。当你在VS中点击构建时。
那么这意味着什么呢?好好想一想,从用户可读的代码到机器代码,或者从已经接近机器代码到实际机器代码的字节代码,这是更进一步的方法吗? 我会在任何一天和以后一起使用ASP.NET,因为ASP.NET总是被证明更快。
是。绝对第一次访问页面时可能需要更长时间,但这不是您应该考虑的情况,它应该是您应该考虑的第10和第20位访问者。