思路话语

。Arlen:思想有多远你就能走多远...

asp.net2.0运行时页面编译的跟踪分析

1.第一次访问某个目录下的页面:
asp.net会将该目录下所有页面编译并产生到web服务器上的临时目录(类似如下路径:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\项目名\b9135081\af48f820)。
那么是不是意味着,如果想让用户打开首页的速度不慢,首页所在的目录下不应该放太多的页面呢?

2.如果在线修改某aspx文件:
假设它在第一次用户访问时生成的是App_Web_mqhdhwjz.0.cs,App_Web_mqhdhwjz.1.cs...和App_Web_mqhdhwjz.dll
那么在修改了它的aspx文件之后,它会将App_Web_mqhdhwjz.0.cs,App_Web_mqhdhwjz.1.cs...删掉,并生成一个App_Web_mqhdhwjz.dll.delete文件(应该是标识该dll已经失效);
并且重新生成对应修改后的aspx的相关编译文件:App_Web_htszrc4w.0.cs,App_Web_htszrc4w.1.cs,...App_Web_htszrc4w.dll

这几天一天为aspx页面include了一个htm页面的问题而苦恼,这事情到这里就明朗了。
下午一直在和niels讨论,为啥在asp页面中include一个html页面之后,修改html能马上体现到asp中,而在aspx中却不行呢?说着就说到了.net在运行时编译的这个问题上,我们都认为就是这个原因导致!
通过以上的跟踪可以得出结论,这个问题的原因的确就在此:
asp是解释型的,所以在修改包含进来的html后,客户端刷新下ie,就能看到效果;
而aspx是每次修改对应的文件后都会编译,而修改被包含的html并不会引起aspx的重新编译,所以在客户端无法看到效果。除非修改一下包含了html的aspx文件,否则,永远看不到所作的修改。

posted on 2009-08-04 20:55  Arlen  阅读(342)  评论(0编辑  收藏  举报

导航