压缩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
相关文章
|
14天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
66 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
13天前
|
Web App开发 大数据 应用服务中间件
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
53 15
|
17天前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
26 3
|
14天前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
Web App开发 新零售 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.尽可能地了解需求,系统层面适用开闭原则 2.模块化,低耦合,能快速响应变化,也可以避免一个子系统的问题波及整个大系统 3.
751 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Found lingering reference异常 ERROR: Found lingering reference file hdfs://jiujiang1:9000/hbase/month_hotstatic/...
729 0
|
Web App开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
                                                                               1.
1732 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
PipeMapRed.waitOutputThreads(): subprocess failed with code X ,这里code X对应的信息如下:error code 1: Operation not perm...
948 0
|
Web App开发 前端开发 Java
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
NoSuchObjectException(message:There is no database named cloudera_manager_metastore_canary_test_db_hive_hivemetastore_df61080e04cd7eb36c4336f71b5a8bc4) at org.
1082 0

热门文章

最新文章