zoukankan      html  css  js  c++  java
  • 小谈 浏览器和服务器交互原理

          作为一名.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 页面生命周期了,谢谢~~~~~

  • 相关阅读:
    jzoj5377 开拓
    JZOJ5371 组合数问题
    JZOJ 10043 第k小数
    联赛emacs配置
    11.7 NOIP总复习总结
    cogs791 [HAOI2012] 音量调节
    bzoj1968 [Ahoi2005]COMMON 约数研究
    cogs 1330 [HNOI2008]玩具装箱toy
    cogs2479 偏序 cdq+树套树
    【CJOJ2433】陌上花开 CDQ分治
  • 原文地址:https://www.cnblogs.com/xianrongbin/p/2237154.html
Copyright © 2011-2022 走看看