[原创]对静态网页和动态网页的进一步理解
今天上《ASP.NET程序设计》课老师问了我一个问题:ASP.NET的网页从服务器呈现到客户端浏览器上,在浏览器上显示的页面是静态的还是动态的呢?当时我想也没想就回答是动态的,因为之前理解的静态页面是以.html或.htm扩展名结尾的页面就是静态页面,而且这样的页面跟数据库没有数据交换,不用提交表单;动态的页面呢则大部分是以.php,.jsp,.asp,.aspx等扩展名结尾的页面,这些页面都是跟服务器或数据库有数据交换的,需要提交用户输入的数据。但是老师说不对,呈现在浏览器上的页面是静态的。这下我就有点迷糊了,它明明是以.aspx为扩展名的页面嘛,为什么会是静态的呢?好吧,待我google一下。
(唉!想想刚才老师还当着全班同学夸我来呢,这下…丢人了!!!)
终于,我在天涯问答中找到了这样的答案:
ASP动态网页与普通的静态网页在显示上有很大不同,它整个的运行过程可分成以下几步:
第1步:用户在浏览器的网址栏中输入.asp文件名称,并回车触发这个ASP的请求。
第2步:浏览器将这个Active Server Pages的请求发送给IIS。
第3步:IIS接收这个请求并根据其.asp的后缀,意识到这是个ASP请求。
第4步:IIS从硬盘或内存中接收正确的ASP文件。
第5步:IIS将这个文件发送到一个叫ASP.dll的特定文件中。
第6步:ASP文件将会从头至尾被执行,并根据命令要求生成相应的静态页面,生成HTML主页。
第7步:HTML主页将被送回浏览器。
第8步:HTML主页将会被用户浏览器解释执行并显示在用户浏览器上。
为了清晰地说明问题,以上步骤已经进行了很大简化。事实上,一个ASP并不一定每次都会重新编译解释,如果第二次接受以前的请求,而该请求没有任何变化,ASP会从数据缓存中提取出以前的结果,而不是再次运行ASP程序,这样可以大大提高运算速度。
对于服务器来说,ASP与HTML有着本质的区别,HTML是不经任何处理就被送回给浏览器,而ASP的每一条命令都首先被用来生成HTML文件,这也正是ASP允许生成动态内容的原因之一,也是动态网页复杂之所在。
另一方面,对于浏览器来说,ASP和HTML几乎没有区别,仅仅是后缀为*.asp和*.htm(或*.html)的不同,当客户端提出ASP请求后,浏览器接受的其实是HTML格式的文件。通过以上一个简单的ASP例子,有两点必须记住:有些代码是在服务器端执行,有些是在客户端浏览器端执行,而在浏览器端看到的是经过服务器解释之后输出的代码。
(个人认为asp和aspx的编译原理应该等同吧,不知道是不是这样,下来在查查)
哦,原来是这样啊。这下我就明白了,(特别是其中的5,6,7步)原来动态的页面都是经过编译处理后在以静态页面的方式发送到浏览器上啊,这样在浏览器上显示的就是静态页面,即使它是以.aspx扩展名结尾的。
然后,为了验证这一想法是否正确,我又做了一个实验。
昨天上《网络数据库》的课时老师是用ASP的网页给我们做的示范,所以我就在浏览器上将.asp页面打开,然后右键查看源文件,再把.asp的源网页文件以记事本打开,这样一对比,还真发现了一些不同。(这里为了好辨别将.asp页面称为asp服务器页面,将在浏览器上右键查看源文件打开的页面称为客户端文件)在asp服务器页面中编写的一些脚本代码,vbscript代码函数之类的代码在客户端文件中都没有显示出来,而相应的功能却是实现了。然后我又做了个.aspx的页面,用同样的方法做了对比,发现在.aspx页面中编写的服务器代码在客户端上均用html标签进行了相应的转换,这样来达到所要实现的效果。
这样看来,静态页面和动态页面原来不仅仅是扩展名不同,还有更实质的东西在里面啊!
这就算今天的小小收获吧!
出处:http://www.cnblogs.com/babycool/
本文首发博客园,版权归作者跟博客园共有。
转载必须保留本段声明,并在页面显著位置给出本文链接,否则保留追究法律责任的权利。