您的位置: 网界网 > 网络通信 > 正文

输入URL按下回车后究竟发生了什么

2011年04月01日 09:38:11 | 作者:黄永兵 译 | 来源:51CTO | 查看本文手机版

摘要:作为一名软件开发或是网络技术人员,你应该对Web应用程序的运行原理和协议交换,以及涉及到的技术:如浏览器、HTTP、HTML、Web服务器和请求处理程序等都有所了解才行。在这篇文章中,我们将深入探讨你访问某个URL时发生的一系列...

标签
协议交换
网络技术
Web应用程序

6、服务器处理请求

图 7

图 7

服务器将会收到GET请求并进行处理,然后发回响应,看起来是一个非常简单的操作,但实际上在这个期间发生了许多有趣的事情。

◆Web服务器软件

Web服务器软件(如IIS或Apache)收到HTTP请求后,立即确定由哪个请求处理程序来处理这个请求,请求处理程序读取请求,生成HTML。

举一个最简单的例子,请求处理程序可以保存在一个文件中,其结构和URL结构完全对应,如http://example.com/folder1/page1.aspx URL映射到文件/httpdocs/folder1/page1.aspx,Web服务器软件也可以配置,将URL手工映射到请求处理程序,因此page1.aspx的公共URL应该是http://example.com/folder1/page1。

◆请求处理程序

请求处理程序读取请求,它的参数和cookie,它可能会读取和更新服务器上的某些数据,然后生成一个HTML页面作为响应。

每个动态网站面临的一个有趣的困难是如何保存数据,小网站通常只有一个SQL数据库来保存数据,但大型网站必须将数据库部署到多台服务器上,解决办法包括水平分区(根据主键,将一张表拆分到多个数据库),复制和使用简化数据库(不追求一致性)。

保持数据廉价更新的一个技术是使用批处理作业,例如,Facebook会及时更新新闻消息源,但"你可能知道"功能可能只需要每晚进行更新(我猜的,我也不知道真实情况如何),批处理作业更新会产生一些过时的不重要的数据,但它使数据更新更快,更简单。

7、服务器发回HTML响应

图 8

图 8

下面是服务器生成并发回的一个响应:

HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP="DSP LAW"Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT2b3????????T?n?@????[...]The entire response is 36 kB, the bulk of them in the byte blob at the end that I trimmed.The Content-Encoding header tells the browser that the response body is compressed using the gzip algorithm.After decompressing the blob, you'll see the HTML you'd expect:...

除了压缩外,消息头指定是否以及如何缓存页面,cookie设置(在这个响应中没有),隐私信息等等。

注意消息头中的Content-Typt设置成text/html了,它告诉浏览器以HTML呈现响应的内容(+微信关注网络世界),而不是作为一个文件下载,浏览器通过消息头决定如何解释响应的内容,但也会考虑其他因素,如URL扩展。

123 45
[责任编辑:李夏艳 li_xiayan@cnw.com.cn]