Web浏览器如何决定应该请求哪个资源

时间:2015-01-14 17:03:47

标签: browser

我有一个基本问题,我正在寻找这个问题很久但我仍然不知道确切的答案。

我正在使用浏览器和Web应用程序。我想知道如何以及基于Web浏览器决定向Web服务器发送特定请求的方式。

例如,当您在网络浏览器的地址栏中输入http://www.google.com时。浏览器会向Web服务器发送一堆请求以正确呈现网页。

现在,我的问题是网络浏览器如何确定需要将哪个请求发送到网络服务器。

  1. 它与响应正文中的某些标签(如“链接”或“脚本”)相关。
  2. 浏览器是否解析javascript函数以查看它是否应该根据这些函数发送请求?

1 个答案:

答案 0 :(得分:2)

让我们举一个例子来解释这个。

考虑您要搜索某些内容,然后在浏览器上点击http://www.google.com。这些是展开的事件,可以让您获取可以输入查询的页面。

  1. 首先,您计算机上的网络堆栈将尝试找出与www.google.com匹配的实际互联网地址。这称为DNS查找。一旦它以IP地址的形式收到此查询的响应,它就可以与服务于google.com的实际服务器建立连接。

  2. 机器建立套接字连接并使用HTTP协议与服务器通信。它查询您尝试访问的地址的/(它是根)的资源。这称为GET请求。该请求通常如下所述:GET /

  3. Google将以HTML页面回复。通常是“index.html”,由浏览器下载。

  4. 下载HTML后,所有链接的资源(例如用于呈现HTML的图像以及HTML页面引用的javascript)都会被下载。

  5. 解析下载的HTML页面,并创建一个名为“DOM Tree”的内存树。此树包含层次结构中HTML页面的元素。创建DOM后,您可以看到正在浏览器上呈现的页面。

  6. 在此解析过程中,浏览器会发现更多要下载的资源,例如图像,样式表,javascript文件。 HTML页面通过不同的标记引用这些资源,例如<img>用于图片,<script>用于javascript。

  7. 下载所有检测到的资源。浏览器并行下载许多这些资源,但按照它们在页面上找到的顺序依次应用它们(javascript和样式表)。

  8. 解析样式表,并将样式应用于HTML页面的DOM。有时,如果样式表下载时间较长,您可以在应用样式之前看到正在呈现的“原始”HTML页面。这有时会通过慢速连接发生。

  9. 一旦下载了HTML页面和相关的javascript文件,浏览器就会调用javascript的“onload”回调函数。大多数Javascript繁重的应用程序都是在这个时候启动的。

  10. 调用onload后,Javascript将接管并附加网页上不同元素的处理程序。一旦安装了处理程序,与网页交互就可以调用一个或多个正在侦听这些事件的javascript函数。

  11. Javascript还可以操纵DOM(页面上的元素),从而导致UI更新(用户看到的内容),因此可以用于在单个页面上构建完整的应用程序。

  12. 以下是有关该流程的更多信息:http://friendlybit.com/css/rendering-a-web-page-step-by-step/

    检查此互动的最佳方法是在Chrome / FireFox或IE上使用开发者工具,并在您访问网页时查看网络活动。

    See list of requests on hitting google.com