您的位置:首页 > 其它

小谈 浏览器和服务器交互原理

2011-11-05 17:26 357 查看
作为一名.net程序员,如果只知道用微软的服务器控件拖出漂亮的界面,然后双击控件,得到响应事件的方法,然后在这个方法里面写出对应的代码,这是远远不够的,就成为人们常说的 "只会拖控件的开发人员"。不仅如此,这样开发出来的网站往往存在执行效率慢的问题即用户量访问过大,浏览器加载页面过慢,如果你看源文件,会发现存在大量的ViewState。因此,如果我们希望成为 asp.net 开发高手,就需深刻了解服务器与浏览器之间的交互原理,以及asp.net页面生命周期。

浏览器和服务器之间进行通信,是通过Socket套接字进行的(这点我们必须清楚,不然作为网站开发者,不知道就太逊了)。作为微软的铁杆粉丝,我在这里就只谈 IIS服务器和浏览器之间通信过程(其他服务器我也不太清楚,能力有限见谅见谅)。

众所周知,现在我们所用的协议都是Http协议,而Http协议是无状态的协议。那么,无状态协议是怎么样的一种协议呢。用通俗一点的话说,用户通过浏览器向服务器发出请求,发出请求之后,浏览器是不会记住当前用户是谁,是谁希望浏览器向服务器发送服务请求的(那么,有些朋友会说,为什么我用浏览器查看下一页 后一页会有显示呢,这就是很多朋友没弄清楚的地方,这是浏览器替用户缓存了页面,而不是Http协议缓存了页面,注意 注意!),浏览器在将服务器返回的数据呈现给用户后,Http协议会自动断开,不会一直替用户工作,因为服务器的资源是很宝贵的,监听此次请求的套接字会立即释放,然后去监听下一个请求!

当浏览器向IIS服务器发送请求后,浏览器会将一长串的请求报文发给服务器,而这些请求报文则包含了相当用的信息喔,请看下面~`

  GET /zt2011/zk/no6.htm?pgv_ref=aio HTTP/1.1  

Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml,

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.30729; InfoPath.2; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; BOIE9;ZHCN)

Accept-Encoding: gzip, deflate

 Host: games.qq.com

Connection: Keep-Alive

  而IIS得到这些请求报文后会对其进行一系列的解析,

  必然的内容 1请求的方式 GET

       2请求的路径 zk/no6.htm?pgv_ref=aio

3使用协议版本 HTTP/1.1      

4请求报文头内容 Accept: image/gif, image/jpeg, image/pjpeg.......

5主机域名 Host: games.qq.com

       6连接状态 Connection:keep-Alive

浏览器会得到服务器的影响 下面是响应报文头

  HTTP/1.1 200 OK

  Server: nginx/0.6.39

Content-Type: text/html; charset=gb2312

Transfer-Encoding: chunked

Connection: keep-alive

Content-Encoding: gzip

 而这些 报文头的具体意思 这里就不详谈了,参考其他博文吧~~

而响应报文体则包含了众多的 html代码 js,css,对于这些内容我将会在以后的博文中陈述!这些设计了页面控件树的生成,比较复杂。

再浏览器获得了服务器的响应后,一次 请求-发送请求-处理请求-返回处理结果 这样一个过程也就结束了,Http协议就完成了一次工作,然后Http协议就不会关心用户在页面上所做的任何事情,直到用户再次请求!这就是一次浏览器和服务器最简单的交互!

好了,这篇文章也就结束了,下面就会讲 asp.net 页面生命周期了,谢谢~~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: