压缩HTTP请求和响应数据的方法

简介: 压缩HTTP请求和响应数据的方法

在客户端和浏览器进行信息交互的时候,如果直接传输文件,可能会消耗太多的流量,通过压缩技术可以为我们节省很多流量,下面来介绍下HTTP响应数据是如何进行压缩的。

HTTP响应数据压缩

使用Gzip压缩文本

浏览器和服务器之间会使用主动协商机制,浏览器向服务器发送请求的时候,其请求标头中会含有Accept-Encoding字段,其中包含了客户端支持的压缩算法,以及各自的优先级,服务器则从中选择一种,使用该算法对响应的消息主体进行压缩,并且发送Content-Encoding首部来告知浏览器它选择了哪一种压缩算法。

  • 客户端请求标头实例

image.png

服务器端响应标头实例

image.png

HTTP请求数据的压缩

头部数据压缩

HTTP协议是不支持头信息压缩的,但是HTTP2引入了头信息压缩机制,一方面,头信息可以使用gzip或compress压缩后再发送,另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号。

请求体数据压缩

上文中,我们提到了HTTP协议中的Accept-Encoding/Content-Encoding机制,这套机制可以很好地用于文本类响应正文地压缩,可以大幅度地减少网络传输,从而一直被广泛使用,但HTTP请求地发起方,无法事先知晓要访问地服务端是否支持解压,所以现阶段地浏览器没有压缩请求正文。

有一些通讯协议基于HTTP做了拓展,他们地客户端和服务端是专用地,可以放心大胆地压缩请求正文,例如WebDAV客户端就是这样地。

实际地Web项目中,会存在请求正文非常大的场景,例如发表长篇博客,上报用于调试的网络数据等待,这些数据如果能在本地压缩后再提交,就可以节省网络流量、减少传输时间。下面将介绍如何对HTTP请求正文进行压缩,包含如何再服务端解压、如何在客户端压缩两部分。

下面是三种常见的文本压缩方式

  1. DEFLATE
  2. ZLIB
  3. GZIP
相关文章
|
23小时前
|
API UED Python
使用Python进行异步HTTP请求的实践指南
使用Python进行异步HTTP请求的实践指南
9 4
|
7天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的 HTTP 请求过程,包括 DNS 解析、TCP 握手、HTTP 请求和响应等环节
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
8天前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
22 1
|
9天前
|
前端开发 API UED
AngularJS的$http服务:深入解析与进行HTTP请求的技术实践
【4月更文挑战第28天】AngularJS的$http服务是核心组件,用于发起HTTP请求与服务器通信。$http服务简化了通信过程,通过深入理解和实践,能构建高效、可靠的前端应用。
|
2月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
164 0
|
1天前
|
存储 算法 安全
[计算机网络]---Https协议
[计算机网络]---Https协议
|
7天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
8天前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议
|
18天前
|
安全 网络安全 数据安全/隐私保护
HTTPS协议
HTTPS协议
22 0