互联网吹嘘在各种服务器上提供的大量资源。 为了让您访问这些资产,您的浏览器应该可以选择向服务器发送请求并为您显示资源响应。 HTTP(超文本传输​​协议)是用于构建请求和响应以在服务器和客户端之间进行强制通信的基本组织。 客户端向服务器发送的消息称为 HTTP 请求。 在发送这些查询的请求时,客户端可以使用不同的方法。

沿着这些思路,HTTP 需求技术是展示要在给定资产上执行的特定所需活动的资源。 每个策略都执行明确无误的语义。 但是,不同的 HTTP 请求技术有一些共同的标准亮点。

HTTP请求方法

HTTP 以一组请求技术为特征,以显示为给定资产执行的理想活动。 尽管它们也可以是事物,但这些请求方法有时会被称为 HTTP 动作词。 它们中的每一个都执行另一种语义。 但是,其中一组共享一些常规亮点,例如可以缓存、安全或幂等的请求方法。

  1. POST:
    POST方法用于将实体呈现给预定义资产,经常导致服务器上的状态或结果的调整。
  2. 得到:
    GET 方法需要预定义资产的描述。 使用 GET 的请求应该只是恢复信息。
  3. PUT:
    PUT 方法将目标资产的所有当前描述替换为请求的有效负载。
  4. HEAD:
    HEAD 技术请求的响应与 GET 请求的响应没有区别,但没有响应的主体。
  5. CONNECT:
    CONNECT 方法建立一个到服务器的通道,该通道由目标资源区分。
  6. 删除:
    DELETE 方法擦除预定资产。
  7. 跟踪:
    TRACE 技术在到达目标资源的过程中进行消息测试。
  8. 选项:
    OPTIONS 技术用于描述目标资产的对应选择。
  9. 补丁:
    PATCH 技术用于对资源应用中途更改。

HTTP 请求如何工作?

HTTP 代表超文本传输​​协议,用于构建 Web 上的请求和响应。 HTTP 期望信息从一个点开始移动,然后移动到下一个网络。

我们假设,您输入一个地址,例如, www.abcxyz.com 在您的浏览器中,您告诉它打开一个 TCP 通道到对该 URL 做出反应的工作人员(统一资源定位器)。 URL 类似于您的住所或电话号码,因为它描述了如何在浏览器上与您联系。 在当前场景中,发出请求的 PC 称为客户端。 您提到的 URL 是与服务器有位置的位置。

资产交换使用 TCP(传输控制协议)进行。 本质上,TCP 处理服务器和浏览器之间的通道。 TCP 用于监督多种网络连接,其中一台计算机或设备需要向另一台计算机或设备发送某些内容。 HTTP 是连接两端的设备应继续传送的命令语言。

并行 HTTP 请求:

您是否遇到过一次需要并行 HTTP 请求的情况? 大多数浏览器一次只打开 2 个到一个域的 HTTP 连接。

了解串行和并行请求:

通常的浏览遵循传统的串行请求,其中客户端通过发送 HTTP 请求请求查询或搜索 Web 上的 URL。 服务器获取数据并通过 HTTP 响应将其发送回客户端。 在此过程中,以串行方式重复使用打开的连接而无需多路复用。 它也被称为保持活动的 HTTP 连接,它具有客户端打开的连接,并且它重新利用它来向客户端机器发送回响应,以获取任何已请求在 HTTP 请求中获取的内容。

串行 HTTP 请求

串行 HTTP 请求

相反,技术领域的进步强调了使用并行 HTTP 请求来节省时间,因为它在更大程度上降低了时间复杂度。 在并行 HTTP 请求中,客户端向服务器发送多个请求,服务器并行处理请求和响应,从而使这种技术更加省时并降低资源利用率。

并行 HTTP 请求

并行 HTTP 请求

建立并行 HTTP 连接的先决条件

  • 减小文件大小。 尺寸越小,响应时间就越好。
  • 删除不必要的 CSS 文件,如果支持,则使用 CSS sprites。
  • 考虑使用数据 URL 的内联图像。
HTTP 连接

对并行 HTTP 请求进行检查

在将数据文件的大小减少到几个字节之后,同时设置大量 HTTP 连接,需要额外的资产利用率。 对于每一个HTTP,DNS(域名服务器)的查询时间和TCP连接的建立时间都存在随机性,因此在同时提及资产的同时扩大特定HTTP的时间利用率将成为更值得注意的可能性。 注意到的最有限的加载时间是(16 毫秒),最长的加载时间是(32 毫秒)。 如果使用几乎更适中的文件大小,则时间差异最多可减少 72%。 由于计算时间取决于所有资产的堆叠完成,同时发出不同的HTTP请求会提示更值得注意的时间不一致性和漏洞,这导致它经常比发出一个HTTP请求来堆叠整合的资源要慢。

检查 HTTP 请求

串行与并行请求的时间比较分析

串行 HTTP 请求时间(处理两个请求)并行 HTTP 请求时间(处理两个请求)
TCP 建立时间(网络)= 40 毫秒TCP 建立时间(网络)= 40 毫秒
请求1 时间 = 20 毫秒要求 时间 = 20 毫秒
处理时间 = 40 毫秒处理时间 = 40 毫秒
响应1 时间 = 20 毫秒回复 时间 = 20 毫秒
请求2 时间 = 20 毫秒
处理时间 = 40 毫秒两个请求和两个响应的总时间等于 120 毫秒。
响应2 时间 = 20 毫秒
两个请求和两个响应的总时间等于 200 毫秒。

对于串行和并行 HTTP 请求时间,
网络开销时间 = 60%
改善 = 50%

如何在 Web 上执行并行 HTTP 请求

它已经在许多研究中进行了多次测试,发现串行 HTTP 请求大部分都可以正常工作而没有任何失败或禁用。 然而,我们想设计一种方法来使并行请求与串行请求一样成功执行。 对于并行 HTTP 请求,需要考虑以下内容。

  • 为并行请求设置参数
  • 超时管理
  • 优先管理
  • 持久和非持久连接
  • 绩效评估

HTTP 请求可以以高性能的方式将请求和响应传回。

为并行请求设置参数:

首先,主要任务是最终确定参数以进行并行HTTP请求的测试,例如请求-响应时间的超时管理,并行发送的请求的优先级,连接确定为持久或非- 持久连接等

超时管理:

为了进行调查研究,我们需要考虑一定范围内的小块数据。 时间估计将基于最大 RTT 为 200ms。 将监控数据传输持续时间,并根据平均持续时间计算超时。

优先级管理:

并行 HTTP 请求的优先级管理起着至关重要的作用,因为来自服务器的响应将由它处理和提供。 数据请求的优先顺序保证了响应的成功传输。 多个 HTTP 请求的有序吞吐量在相应地优先排序时会变得稳定,因为它可以确保及时响应交付给客户端。

持久和非持久连接:

持久连接(HTTP 勤劳关联)是一个组织通信通道,它对额外的 HTTP 请求和响应保持打开状态,而不是在交换后关闭。 而非持久连接则需要 2RTT + 文件传输时间的连接时间。 它需要主要的 RTT(往返时间)来建立客户端和服务器之间的连接。 客户端在非持久性中获取项目后,连接会迅速关闭。

绩效评估:

并行HTTP请求的性能评估可以分两个阶段进行,即TCP友好性和数据健壮性。 首先,要评估客户端驱动请求的TCP连接的友好性。 其次,要根据延迟和丢包来确定响应的鲁棒性。

使用 javascript 和 ProxyCrawl 的 Scraper API 的并行 HTTP 请求

为了简短起见,我们将使用 ProxyCrawl 的 刮板API 执行并行 HTTP 请求。

我们将使用 Visual Studio Code,因为它是可在大多数操作系统上使用的最流行且易于访问的编辑器之一。

在我们深入编码之前,让我们准备我们的项目结构并确保安装所有先决条件。

  • 创建一个新的 Node.js 项目(示例名称: 星期一)
  • 安装 Node.js 的 ProxyCrawl 库, 打开终端并执行 npm 我代理爬行
  • 为 Scraper API 创建一个 JS 文件。 (例子: 启动.js)

完成后,让我们开始在我们创建的第一个 .js 文件 (Start.js) 中编写代码。 我们的前两行将声明所有常量,并在这个项目中需要必要的 API 类。

1
常量 { 爬虫API } = 要求('代理爬行');

下一行将很重要,因为它将保存您的 ProxyCrawl 令牌的值以及执行并行 API 调用的网站:

1
2
3
4
5
常量 api =  爬虫API({ 象征: '你的令牌' });

常量 承诺1 = api。得到('https://monday.com/');
常量 承诺2 = api。得到('https://www.codecademy.com/');
常量 承诺3 = api。得到('https://jsonplaceholder.typicode.com/');

现在,我们可以基于 ProxyCrawl 库编写一个简单的 API 调用来抓取您选择的网站,然后在控制台中使用基于

1
2
3
4
5
6
7
8
9
10
11
12
13
常量 { 爬虫API } = 要求('代理爬行');

常量 api = 爬虫API({ 象征: '你的令牌' });

常量 承诺1 = api。得到('https://monday.com/');
常量 承诺2 = api。得到('https://www.codecademy.com/');
常量 承诺3 = api。得到('https://jsonplaceholder.typicode.com/');

承诺.所有([承诺 1,承诺 2,承诺 3])。然后((响应) => {
提供 ( 我= 0; 我<响应。长度; i ++){
领事.日志(响应[i]。网址 + '\n' +响应[i]。身体 + '\n\n');
}
});

输出将与此类似 JSON 格式。

JSON 格式 1 JSON 格式 2 JSON 格式 3 JSON 格式 4 JSON 格式 5

总结

并行 HTTP 请求需要从研究的角度进行更多改进,以深入了解通过减小数据文件大小、使用延迟加载组件、CSS 头标签、JSON 代替 XML、更喜欢 GET 方法来优化同步性能除非您需要 POST 方法和使用硬件来改进和加速并行 HTTP 请求的效果。