浏览器工作原理拆解分析

合集下载

浏览器工作原理

浏览器工作原理

从输入网址到显示页面:浏览器工作原理拆解分析本文将深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。

DNS查找过程如下:1.浏览器缓存–浏览器会缓存DNS记录一段时间。

有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。

2.系统缓存–如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。

这样便可获得系统缓存中的记录。

3.路由器缓存–接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。

4.ISP DNS 缓存–接下来要check的就是ISP缓存DNS的服务器。

在这一般都能找到相应的缓存记录。

5.递归搜索–你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。

一般DNS服务器的缓存中会有.co m域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

DNS递归查找如下图所示:DNS有一点令人担忧,这就是像 或者这样的整个域名看上去只是对应一个单独的IP地址。

还好,有几种方法可以消除这个瓶颈:1. 循环DNS 是DNS查找时返回多个IP时的解决方案。

举例来说,Faceboo 实际上就对应了四个IP地址。

2. 负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。

一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

3. 地理DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。

这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

4. Anycast是一个IP地址映射多个物理主机的路由技术。

美中不足,Anycast 与TCP协议适应的不是很好,所以很少应用在那些方案中。

《Web浏览器工作原理解析》

《Web浏览器工作原理解析》

《Web浏览器工作原理解析》Web浏览器工作原理解析Web浏览器已经成为我们生活中不可或缺的重要工具。

它为我们提供了许多方便,比如我们可以轻松浏览互联网上的网页,查看邮件以及享受多种多样的娱乐和社交服务。

但是,对于Web浏览器的工作原理,很多人还是一知半解。

在这篇文章中,我们将深入了解Web浏览器的工作原理,帮助大家更好地理解和掌握Web浏览器。

一、Web浏览器简介Web浏览器是一种客户端软件,主要用于访问和解析互联网上的网页。

Web 浏览器的功能不仅仅是简单地显示网页内容,还包括与服务器进行交互,解析HTML和CSS,以及实现一些高级功能,比如JavaScript代码执行和插件支持等。

常见的Web浏览器有IE、Chrome、Firefox、Safari和Opera等。

它们都有自己的特色和优点。

例如,IE通常被认为是Windows系统的默认浏览器,Chrome则以快速和安全性见长,Firefox支持大量的插件和扩展,Safari 是苹果公司的默认浏览器,而Opera则专注于流媒体和内置VPN功能等。

二、Web浏览器的结构Web浏览器的结构一般分为五个层次,包括用户界面层、浏览器引擎层、渲染引擎层、网络层和操作系统层。

用户界面层主要负责显示和操作Web浏览器的用户界面,例如地址栏、菜单、工具栏和书签等。

浏览器引擎层则负责处理用户界面和渲染引擎之间的交互,执行用户的指令并将其传递给渲染引擎进行处理。

渲染引擎层是Web浏览器的核心部分。

它主要用于解析HTML和CSS代码,并将它们转换成网页的可视化渲染,包括文字、图片、音频和视频等。

渲染引擎层主要包括两个部分:HTML解析器和CSS解析器。

HTML解析器将HTML代码转换成浏览器结构树,CSS解析器则将CSS代码转换成样式规则,并将其应用到结构树上。

网络层主要负责管理HTTP协议和其他网络协议。

它可以缓存请求和响应,以减少网络传输的重复。

操作系统层可以提供访问硬件的底层API,例如磁盘、内存和图像等。

WEB浏览器工作原理

WEB浏览器工作原理

WEB浏览器工作原理引言概述:WEB浏览器是我们日常使用最频繁的软件之一,它能够将互联网上的网页内容呈现给用户。

然而,很多人并不了解WEB浏览器的工作原理。

本文将详细介绍WEB浏览器的工作原理,包括URL解析、HTTP请求、渲染引擎和页面呈现等方面。

一、URL解析1.1 URL的结构URL(Uniform Resource Locator)是用于标识互联网上资源的地址。

它包含了协议、主机名、路径和查询等部分。

协议指定了浏览器与服务器之间的通信规则,主机名指定了资源所在的服务器,路径指定了资源在服务器上的位置,查询用于传递参数。

1.2 URL解析过程当用户在浏览器中输入一个URL时,浏览器会对其进行解析。

首先,浏览器会判断协议类型,如HTTP或HTTPS。

然后,浏览器会解析主机名,通过DNS解析获取服务器的IP地址。

接下来,浏览器会解析路径和查询等参数。

最后,浏览器会将解析后的URL传递给下一步的HTTP请求。

1.3 URL编码URL中的某些字符可能会引起歧义或冲突,因此需要进行编码。

浏览器会将URL中的非安全字符使用特定编码方式进行替换,以确保传输的正确性。

常见的编码方式包括百分号编码和Base64编码等。

二、HTTP请求2.1 请求的发送在解析完URL后,浏览器会根据协议类型(如HTTP)创建一个与服务器的连接。

然后,浏览器会构建一个HTTP请求报文,包括请求方法(如GET或POST)、请求头部和请求体等信息。

请求头部包含了一些关于请求的附加信息,如User-Agent、Cookie和Referer等。

2.2 请求的传输浏览器将构建好的请求报文通过网络传输给服务器。

这个过程通常使用TCP/IP协议进行,浏览器会将请求报文分割成一个个数据包,并通过网络传输给服务器。

服务器接收到请求后,会进行相应的处理。

2.3 响应的接收服务器处理完请求后,会生成一个HTTP响应报文,并将其发送给浏览器。

响应报文包含了状态码、响应头部和响应体等信息。

浏览器工作原理

浏览器工作原理

浏览器工作原理浏览器作为我们日常生活中不可或缺的工具,扮演着连接我们与互联网世界的桥梁角色。

那么,究竟浏览器是如何工作的呢?接下来,我们将深入探讨浏览器的工作原理。

首先,我们需要了解的是浏览器的结构。

一个典型的浏览器包含了用户界面、浏览器引擎、渲染引擎、网络、用户界面后端、JavaScript解释器等几个核心模块。

用户界面负责展示浏览器窗口的各个部分,浏览器引擎则提供了一个用于操作用户界面和渲染引擎的接口。

渲染引擎负责将请求的内容展示在浏览器窗口中,网络模块则负责网络资源的加载,而JavaScript解释器则用于解释和执行JavaScript代码。

当用户输入一个URL或者点击链接时,浏览器引擎会向网络模块发起请求,网络模块则会向服务器请求相应的资源。

一旦资源被获取,浏览器引擎会将其传递给渲染引擎进行处理。

渲染引擎会解析HTML和CSS,并将其转换为可供浏览器引擎操作的文档对象模型(DOM)和渲染树。

接着,浏览器引擎会利用用户界面后端将渲染树展示在用户界面上。

同时,如果页面中存在JavaScript代码,JavaScript解释器会对其进行解释和执行,从而实现页面的交互功能。

除了上述基本的工作流程外,现代浏览器还包含了诸如缓存、安全机制、插件等多种功能。

浏览器会利用缓存机制来提高页面加载速度,安全机制则用于防范恶意网站和网络攻击,而插件则可以为浏览器增加各种额外的功能,如广告拦截、密码管理等。

总的来说,浏览器的工作原理可以简单概括为用户输入URL或点击链接,浏览器引擎向网络模块发起请求,获取资源后交由渲染引擎处理并展示在用户界面上,同时执行JavaScript代码实现页面交互功能。

除此之外,浏览器还包含了多种功能模块,如缓存、安全机制和插件,为用户提供更加便捷、安全和丰富的浏览体验。

通过对浏览器工作原理的深入了解,我们可以更好地理解浏览器在背后的运作机制,从而更好地利用浏览器为我们的生活和工作带来便利。

浏览器的工作原理

浏览器的工作原理

浏览器的工作原理浏览器作为我们日常生活中不可或缺的工具,其工作原理是怎样的呢?在我们打开浏览器,输入网址,然后就可以访问各种网页的背后,浏览器是如何运作的呢?接下来,我们就来一探究竟。

首先,当我们输入一个网址并按下回车键时,浏览器会将这个网址发送给一个称为域名系统(DNS)的服务器。

DNS服务器会将网址转换成对应的IP地址,这样浏览器才能找到正确的服务器。

接着,浏览器会向服务器发送请求,请求服务器发送网页的内容。

服务器接收到请求后,会将网页的HTML、CSS、JavaScript等文件发送回浏览器。

浏览器接收到这些文件后,会先解析HTML文件,构建出网页的结构。

然后,浏览器会解析CSS文件,渲染出网页的样式和布局。

最后,浏览器会执行JavaScript文件,实现网页的交互功能。

在这个过程中,浏览器会利用缓存来提高网页的加载速度。

当我们再次访问同一个网页时,浏览器会先检查缓存中是否有该网页的副本,如果有的话就直接从缓存中加载,不需要再次向服务器发送请求。

除了以上的工作原理,浏览器还有一些其他的功能。

比如,浏览器会对网页进行安全检查,防止恶意网站对用户造成伤害。

此外,浏览器还支持插件和扩展,用户可以根据自己的需要安装各种插件,来扩展浏览器的功能。

总的来说,浏览器的工作原理可以简单概括为,发送请求、接收响应、解析文件、渲染页面、执行JavaScript、利用缓存、进行安全检查、支持插件扩展等一系列过程。

通过这些过程,我们才能够在浏览器上畅快地浏览各种网页。

希望通过本文的介绍,读者能够对浏览器的工作原理有一个更清晰的认识,也能够更加深入地理解浏览器在我们日常生活中的重要作用。

浏览器的原理

浏览器的原理

浏览器的原理浏览器的原理可以分为以下几个方面:1. 用户界面:浏览器的用户界面由地址栏、导航按钮、书签栏、菜单栏等组成,用户可以通过这些界面与浏览器进行交互。

2. 解析URL:当用户在地址栏中输入一个URL时,浏览器会将该URL解析成协议、域名、路径等部分,以便后续进行网络请求。

3. 网络请求:浏览器使用HTTP协议发送网络请求,请求资源包括HTML、CSS、JavaScript、图片等。

浏览器将请求发送给服务器,并等待服务器的响应。

4. 渲染引擎:浏览器的渲染引擎负责将接收到的HTML、CSS等资源解析成用户可见的网页。

渲染引擎会将HTML文档转换成DOM树,并根据CSS样式表进行样式计算,然后将DOM树和样式表生成渲染树。

最后,渲染引擎会根据渲染树来绘制网页。

5. JavaScript引擎:浏览器内置了JavaScript引擎,用于执行网页中的JavaScript代码。

当渲染引擎遇到JavaScript代码时,会将其交给JavaScript引擎处理。

JavaScript引擎会将代码解释成字节码或机器码,并执行代码逻辑。

6. 布局和绘制:渲染引擎将渲染树分割成多个图层,每个图层包含独立的元素。

在布局阶段,浏览器会计算每个元素的大小、位置等布局信息。

然后,在绘制阶段,浏览器会将布局信息转换成屏幕上的像素,最终显示在用户界面中。

7. 回流与重绘:当网页的布局发生变化时,浏览器需要重新计算元素的大小和位置,这个过程称为回流。

回流会导致浏览器重新布局和绘制整个页面,消耗较大的资源。

而当元素的样式发生变化,但不影响布局时,浏览器只需要重新绘制受影响的部分,这个过程称为重绘。

8. 缓存机制:浏览器会使用缓存来提高网页的加载速度。

当浏览器请求资源时,会先检查缓存中是否有相应的资源,如果有,则直接从缓存中获取,而不是发送网络请求。

9. 安全机制:浏览器通过实现安全机制来保护用户的隐私和安全。

例如,浏览器会对网站的证书进行验证,防止用户访问受到篡改的网站。

WEB浏览器工作原理

WEB浏览器工作原理Web浏览器是我们日常使用的一种软件,它能够让我们浏览互联网上的各种网页。

那么,它是如何工作的呢?在这篇文章中,我们将详细介绍Web浏览器的工作原理。

1. 用户界面Web浏览器的用户界面通常由地址栏、前进和后退按钮、书签栏、菜单栏等组成。

用户可以通过界面与浏览器进行交互,输入网址、点击链接等操作。

2. URL解析当用户在地址栏中输入一个网址时,浏览器会对该网址进行解析。

首先,浏览器会检查输入的网址是否合法,并添加协议头(如http://或https://)如果用户没有输入。

然后,浏览器会将网址分解成主机名、路径、查询参数等部分。

3. DNS解析在进行网络通信之前,浏览器需要将主机名转换为IP地址。

这个过程称为DNS解析。

浏览器会向本地DNS服务器发送一个查询请求,本地DNS服务器会返回与主机名对应的IP地址。

4. 建立连接一旦浏览器获得了目标服务器的IP地址,它就会使用HTTP协议与服务器建立连接。

建立连接的过程包括三次握手,即浏览器向服务器发送一个连接请求,服务器回复确认,最后浏览器再次回复确认。

5. 发送请求连接建立后,浏览器会向服务器发送HTTP请求。

请求中包含了请求方法(如GET或POST)、请求头(如Accept、User-Agent等)和请求体(对于POST请求)等信息。

服务器根据这些信息来处理请求,并返回相应的数据。

6. 接收响应服务器接收到浏览器的请求后,会根据请求的内容进行处理,并生成相应的响应。

响应中包含了状态码、响应头和响应体等部分。

状态码表示服务器对请求的处理结果,响应头包含了响应的一些元信息,而响应体则是服务器返回的实际数据。

7. 渲染页面一旦浏览器接收到服务器返回的响应,它就会开始解析响应并渲染页面。

浏览器会根据响应头中的Content-Type字段确定响应的数据类型,如HTML、CSS、JavaScript等。

然后,浏览器会解析这些数据,并将其转换成可视化的页面。

WEB浏览器工作原理

WEB浏览器工作原理一、概述WEB浏览器是我们日常生活中时常使用的工具,它能够将我们输入的网址转化为可视化的网页内容。

本文将详细介绍WEB浏览器的工作原理,包括URL解析、HTTP请求、渲染引擎、页面布局和渲染等方面。

二、URL解析当我们在浏览器地址栏中输入一个URL时,浏览器首先会对该URL进行解析。

URL通常由协议、主机名、端口号、路径和查询参数等组成。

浏览器会根据这些信息来确定要访问的服务器和资源。

三、HTTP请求一旦URL解析完成,浏览器会根据URL中的协议(通常是HTTP或者HTTPS)发起相应的网络请求。

浏览器会构建一个HTTP请求报文,包括请求方法(GET、POST等)、请求头部(Accept、User-Agent等)和请求体(对于POST请求)。

然后浏览器会将该请求发送给服务器。

四、服务器响应服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。

服务器会构建一个HTTP响应报文,包括响应状态码(200表示成功、404表示资源未找到等)、响应头部(Content-Type、Content-Length等)和响应体(返回的网页内容)。

然后服务器将该响应发送给浏览器。

五、渲染引擎浏览器接收到服务器的响应后,会将响应报文交给渲染引擎进行处理。

渲染引擎负责解析HTML、CSS和JavaScript等网页内容,并将其转化为可视化的页面。

渲染引擎通常由解析器和布局引擎组成。

六、页面布局和渲染渲染引擎会将解析后的网页内容进行布局和渲染。

布局引擎负责确定网页中各个元素的位置和大小,而渲染引擎则负责将这些元素绘制到屏幕上。

渲染过程中还包括图象加载、字体渲染和动画效果等。

七、用户交互当网页加载完成后,用户可以与页面进行交互。

用户可以点击链接、填写表单、滚动页面等。

浏览器会根据用户的操作生成相应的事件,并通过JavaScript脚本来处理这些事件。

用户交互可以使页面实现更多的功能和效果。

浏览器的工作原理

浏览器的工作原理浏览器是一种用于访问和浏览互联网上网页的软件应用程序。

它的工作原理可以分为如下几个步骤:1. 用户输入URL:用户在浏览器的地址栏中输入要访问的网页的URL(统一资源定位符)。

2. DNS解析:浏览器将URL中的主机名发送给DNS(域名系统)服务器,以获取网页所对应的IP地址。

3. 建立TCP连接:浏览器使用HTTP(超文本传输协议)通过互联网与服务器建立TCP连接。

4. 发送HTTP请求:一旦TCP连接建立,浏览器会向服务器发送一个HTTP请求,请求包含要获取的资源信息,例如网页的HTML文件和其中的图片、文本等。

5. 服务器响应:服务器接收到HTTP请求后,会返回一个HTTP响应,其中包含所请求的资源数据。

6. 下载资源:浏览器解析响应数据,将其中的HTML、CSS和JavaScript等文件进行下载。

7. 解析和渲染:浏览器根据下载的HTML文件构建DOM(文档对象模型),解析CSS文件构建CSSOM(CSS对象模型),并将两者合并为渲染树。

同时,浏览器还执行JavaScript代码添加交互功能。

8. 呈现页面:浏览器使用解析和渲染后的渲染树,通过将文本、图像和其他媒体对象绘制到屏幕上,显示最终的网页内容。

9. 用户交互与网络请求:用户可以与网页进行交互,点击链接、填写表单等操作会触发浏览器发送新的HTTP请求,从而获取新的资源数据。

10. 页面更新:如果接收到新的资源数据,浏览器会更新渲染树,并将新的内容呈现给用户。

如果用户关闭了标签页或者打开了新的网页,浏览器会终止当前网页的下载和渲染。

以上是浏览器工作的基本流程,通过这些步骤,浏览器能够从互联网上获取并展示网页内容,为用户提供丰富的网络体验。

浏览器工作原理(图)

前端必读:浏览器内部工作原理目录一、介绍二、渲染引擎三、解析与DOM树构建四、渲染树构建五、布局六、绘制七、动态变化八、渲染引擎的线程九、CSS2可视模型一、介绍浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入到你看到google主页过程中都发生了什么。

将讨论的浏览器今天,有五种主流浏览器——IE、Firefox、Safari、Chrome及Opera。

本文将基于一些开源浏览器的例子——Firefox、Chrome及Safari,Safari是部分开源的。

根据W3C(World Wide Web Consortium万维网联盟)的浏览器统计数据,当前(2011年5月),Firefox、Safari及Chrome的市场占有率综合已接近60%。

(原文为2009年10月,数据没有太大变化)因此,可以说开源浏览器已经占据了浏览器市场的半壁江山。

浏览器的主要功能浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF、image及其他格式。

用户用URI(Uniform Resource Identifier统一资源标识符)来指定所请求资源的位置,在网络一章有更多讨论。

HTML和CSS规范中规定了浏览器解释html文档的方式,由W3C组织对这些规范进行维护,W3C是负责制定web标准的组织。

HTML规范的最新版本是HTML4(/TR/html401/),HTML5还在制定中(译注:两年前),最新的CSS规范版本是2(/TR/CSS2),CSS3也还正在制定中(译注:同样两年前)。

这些年来,浏览器厂商纷纷开发自己的扩展,对规范的遵循并不完善,这为web开发者带来了严重的兼容性问题。

但是,浏览器的用户界面则差不多,常见的用户界面元素包括:∙用来输入URI的地址栏∙前进、后退按钮∙书签选项∙用于刷新及暂停当前加载文档的刷新、暂停按钮∙用于到达主页的主页按钮奇怪的是,并没有哪个正式公布的规范对用户界面做出规定,这些是多年来各浏览器厂商之间相互模仿和不断改进的结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浏览器工作原理拆解分析1. 首先嘛,你得在浏览器里输入网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。

DNS查找过程如下:浏览器缓存——浏览器会缓存DNS记录一段时间。

有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。

系统缓存——如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows 里是gethostbyname)。

这样便可获得系统缓存中的记录。

路由器缓存——接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。

ISP DNS缓存——接下来要check的就是ISP缓存DNS的服务器。

在这一般都能找到相应的缓存记录。

递归搜索——你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。

一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

DNS递归查找如下图所示:DNS有一点令人担忧,这就是像 或者 这样的整个域名看上去只是对应一个单独的IP地址。

还好,有几种方法可以消除这个瓶颈:循环 DNS是DNS查找时返回多个IP时的解决方案。

举例来说,实际上就对应了四个IP地址。

负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。

一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。

这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

Anycast是一个IP地址映射多个物理主机的路由技术。

美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。

大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。

3. 浏览器给web服务器发送一个HTTP请求因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。

所以,浏览器将把一下请求发送到Facebook所在的服务器:GET / HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...] User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] Accept-Encoding: gzip, deflateConnection: Keep-AliveHost: Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...] GET 这个请求定义了要读取的URL:“/”。

浏览器自身定义用户代理(User-Agent 头),和它希望接受什么类型的相应(Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。

请求中也包含浏览器存储的该域名的cookies。

可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。

这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。

Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。

用来看原始HTTP请求及其相应的工具很多。

作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。

这些软件在网站优化时会帮上很大忙。

除了获取请求,还有一种是发送请求,它常在提交表单用到。

发送请求通过URL传递其参数(e.g.: /puzzle.aspx?id=85)。

发送请求在请求正文头之后发送其参数。

像“/”中的斜杠是至关重要的。

这种情况下,浏览器能安全的添加斜杠。

而像“/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加斜杠。

这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。

4. facebook服务的永久重定向响应图中所示为Facebook服务器发回给浏览器的响应:HTTP/1.1 301 Moved PermanentlyCache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTLocation: /P3P: CP="DSP LAW"Pragma: no-cacheSet-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;path=/; domain=; httponlyContent-Type: text/html; charset=utf-8X-Cnection: closeDate: Fri, 12 Feb 2010 05:09:51 GMTContent-Length: 0服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“/”而非“/”。

为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。

其中一个原因跟搜索引擎排名有关。

你看,如果一个页面有两个地址,就像/ 和/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。

而搜索引擎知道301永久重定向是什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。

还有一个是用不同的地址会造成缓存友好性变差。

当一个页面有好几个名字时,它可能会在缓存里出现好几次。

5. 浏览器跟踪重定向地址现在,浏览器知道了“/”才是要访问的正确地址,所以它会发送另一个获取请求:GET / HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...] Accept-Language: en-USUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] Accept-Encoding: gzip, deflateConnection: Keep-AliveCookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]Host: 头信息以之前请求中的意义相同。

6. 服务器“处理”请求服务器接收到获取请求,然后处理并返回一个响应。

这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!Web 服务器软件web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。

请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像,PHP, RUBY...)。

举个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。

像/folder/page.aspx这个地址会映射/httpdocs/folder/page.aspx 这个文件。

web服务器软件可以设置成为地址人工的对应请求处理,这样page.aspx的发布地址就可以是/folder/page。

请求处理请求处理阅读请求及它的参数和cookies。

它会读取也可能更新一些数据,并讲数据存储在服务器上。

然后,需求处理会生成一个HTML响应。

所有动态网站都面临一个有意思的难点——如何存储数据。

小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。

解决方案有:sharding (基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。

委托工作给批处理是一个廉价保持数据更新的技术。

举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者猜测是这样的,改功能如何完善不得而知)。

批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。

7. 服务器发回一个HTML响应图中为服务器生成并返回的响应: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 GMT2b3Tn@[...]整个响应大小为35kB,其中大部分在整理后以blob类型传输。

内容编码头告诉浏览器整个响应体用gzip算法进行压缩。

解压blob块后,你可以看到如下期望的HTML:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="/1999/xhtml" xml:lang="en"lang="en" id="facebook" class=" no_js"><head><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><meta http-equiv="Content-language" content="en" />...关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么cookies要去设置(前面这个响应里没有这点)和隐私信息等等。

相关文档
最新文档