ASP.NET 页面 动态编译

当你创建一个ASP.NET页面时,其实是在创建一个.NET类的源代码,创建System.Web.UI.Page类的一个实例(Instance)

 

ASP.NET页面的所有内容,包括所有脚本(script)和HTML内容,都会编译进一个.NET类中

 

请求一个ASP.NET页面时,ASP.NET Framework检测这个页面对应的.NET类是否存在,如果不存在,Framework会自动把这个页面编译成一个新的类,并把编译后的类(程序集)保存到到ASP.NET临时文件夹中

 

下次对这个页面的请求时,页面就不会再编译一次了。先前的编译类会执行并把结果返回给浏览器。

 

一个类加入到ASP.NET临时文件夹时,这个类与原始ASP.NET应用程序之间就建立起了文件以来,任何方式对ASP.NET页面的修改,对应的.NET类都会被自动地删除,下次对这个页面请求时,框架自动地把修改后的页面代码编译成一个新的.NET类。

 

这个过程叫做动态编译(Dynamic Compilation)。 动态编译使ASP.NET应用程序得以支持成千上万并发用户。不同于传统的ASP.NET页面,页面不需要在每次被请求时都进行分析和编译,页面仅在应用程序被修改时才进行编译

 

 

注解:

通过设置CompilationMode属性,可以禁用单个页面、一个文件夹中的页面或整个网站的动态编译。

  • <%@ Page %>应用CompilationMode属性:禁用单个页面的动态编译
  • Web配置文件的Pages元素应用CompilationMode属性:禁用整个文件夹或整个应用程序的动态编译。

当网站有数千个页面,又不愿为每个页面向内存中加载程序集时,禁用编译就很有用。把CompilationMode属性设置为Never,页面就不会被编译,也不会为这个页面生成程序集。页面仅在运行时被解释。

 

对包含服务器端代码的页面,不能禁用编译。具体来说,未编译页面不能包含服务器端<script>代码块。此外,未编译页面不能包含ASP.NET控件和数据绑定表达式(datebinding expression).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值