HTTP 2.0 详细介绍

HTTP 2.0 详细介绍

什么是HTTP/2

HTTP/2是用于安全传输万维网内容的应用层协议。与其前身HTTP/1.1有很多相似之处,但它们有很多重要的不同之处。HTTP/2旨在使Web页面加载更快,同时提供更好的安全性和代码复杂性,而且还带来了一些新功能。

HTTP/2的优点

  1. 多路复用
    HTTP/2采用二进制分帧,一个TCP连接可以传输多个二进制消息(请求/响应)。这使得连接利用率更高,在同一条连接上的多个请求可以并行进行(异步传输),不需要等待其它请求处理完成。此外,HTTP/2中还有一个优化机制:服务器可以对已经发出的响应与客户端未来请求的优先级进行关联,从而保证一些关键资源能够优先处理。

  2. 头部压缩
    HTTP/2使用一种称为HPACK的新的头部压缩算法。 在HTTP/1.x中,头部信息是纯文本,需要消耗大量的带宽,而且重复出现的信息不必每次都重复发送。 HTTP/2利用HPACK算法在客户端和服务器之间减少网络流量,缩短加载时间。

  3. 服务器推送
    HTTP/2引入了服务器推送的概念,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,而且不需要客户端明确要求。例如,如果客户端请求了一个HTML文档,服务器可以发送所请求的文档及其所链接到的资源,以便在客户端接收响应按钮之前加载这些资源。

  4. 更好的安全性
    HTTP/2 对隐私和安全保护更加重视,引入了服务器证书证明机制,标准化了WhatsApp等应用程序使用的TLS吊销警告格式。

HTTP/2的示例

HTTP/1.1

GET / HTTP/1.1\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n

HTTP/2

PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
GET / HTTP/2.0\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n

从上面两个示例可以看出,如果对于同一个请求,在HTTP/1.1中需要发送8行纯文本头部信息,而在HTTP/2中,只需发送一行头部信息即可。这是由于HTTP/2采用了头部压缩算法。此外,在HTTP/2中,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,在HTTP/1.1中则需要客户端明确要求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTTP 2.0 详细介绍 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • .NET Core对象池的应用:编程篇

    .NET Core对象池的应用:编程篇 在本攻略中,我们将深入讲解如何使用.NET Core对象池来提高应用程序的性能,并提供两个示例说明。 什么是.NET Core对象池? .NET Core对象池是一种用于重用对象的机制,它可以显著提高应用程序的性能。对象池通过预先分配和缓存对象来避免频繁的垃圾回收和内存分配,从而减少了应用程序的开销。 如何使用.NET…

    C# 2023年5月17日
    00
  • c# 解决IIS写Excel的权限问题

    针对这个问题,我们需要先明确一下背景和原理。 背景 通常情况下,在我们开发 ASP.NET 程序时,会遇到需要生成 Excel 文件的情况。而在将 Excel 文件写入到服务器磁盘时,可能会面临权限不足的问题,导致写入失败。那么如何解决这个问题呢? 原理 在 IIS 中,每个应用程序池都有一个对应的身份标识,这个身份标识默认是 IIS AppPool{应用程…

    C# 2023年5月15日
    00
  • ASP.NET MVC @Helper辅助方法和@functons自定义函数的使用方法

    ASP.NET MVC提供了@Helper辅助方法和@Functions自定义函数来简化视图中的重复代码和处理逻辑,更好地实现页面渲染。以下是使用方法的完整攻略。 1. @Helper辅助方法的使用 @Helper辅助方法是一个在Razor视图中定义的,可以在其他视图中调用的函数,用来处理通用逻辑和代码。要使用@Helper辅助方法,请按照以下步骤进行: 1…

    C# 2023年5月31日
    00
  • C# String.Compare()方法: 比较两个字符串,返回比较结果

    C#中的String.Compare() Compare() 方法是C#中 string 类的成员方法之一,它用于比较两个字符串,并返回一个整数值来表示它们之间的关系。在比较字符串时,该方法会将文本视为由独立的字符组成的序列,而不是单个字符串。 下面是该方法的语法: public static int Compare(string strA, string …

    C# 2023年4月19日
    00
  • C# 实现FTP上传资料的示例

    C# 实现FTP上传资料的示例 在 C# 中,我们可以使用 FtpWebRequest 类实现文件的上传和下载操作。下面我将详细讲解如何使用 FtpWebRequest 类实现 FTP 上传资料的示例。 步骤 以下是 C# 实现 FTP 上传资料的步骤: 创建 FtpWebRequest 对象,设置 FTP 服务器的地址、用户名、密码和操作类型(上传或下载等…

    C# 2023年6月1日
    00
  • C#使用checkedListBox1控件链接数据库的方法示例

    下面是详细讲解“C#使用checkedListBox1控件链接数据库的方法示例”的攻略: 一、准备工作 在使用checkedListBox1控件链接数据库之前需要先安装相应的数据库,例如MySQL、SQL server等。然后需要在Visual Studio中打开一个C#的Windows From应用程序项目。在这个项目中,我们需要为它添加一个checked…

    C# 2023年5月31日
    00
  • c#正反序列化XML文件示例(xml序列化)

    下面请认真阅读以下完整攻略。 c#正反序列化XML文件示例(xml序列化) 什么是XML序列化? XML序列化是一种将对象统一保存为XML格式并在需要时将XML信息还原成对象的技术。在C#中,可以使用System.Xml.Serialization命名空间中的类来实现XML序列化和反序列化。 XML序列化的基本过程 1. 定义要序列化的对象 在C#中,需要将…

    C# 2023年5月15日
    00
  • C#预定义的基础类型转换

    C#是一种类型安全的语言,对于类型转换,也需要符合类型安全的规则。C#预定义了许多基础类型转换规则,这些规则可以在不同的数据类型之间进行转换,如下所示: 类型 描述 bool 布尔型 byte 无符号8位整数 char Unicode 16位字符 decimal 高精度小数 double 双精度浮点数 float 单精度浮点数 int 有符号32位整数 lo…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部