Http 协议 常用消息头

1.压缩

HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件,能大大减少网络吞吐。

请求:通常会有Accept-Encoding:gzip

响应:server端生成原始的body,然后压缩,增加头部Content-Encoding:gzip。见图1-1.

Http 协议 常用消息头

图1-1 cctv.com,gzio压缩与chunked传输 

可通过fiddler看一下压缩前后的大小对比。

Http 协议 常用消息头

图1-2cctv.com,fiddler看原始responde 头部


Http 协议 常用消息头

图1-3cctv.com,fiddler支持对response解压,前后大小对比已标出

2.分块传输

Transfer-Encoding: chunked 表示分块传输。不用此头部,通常用Content-Length来标记报文的大小。

不用分块传输:服务端生成完整的响应,算出来大小,标记出来。

使用分块传输:服务端一边生成响应,一边输出,不需要缓存完整的结果,节省内存。

netty框架支持分块传输,所需语句:ch.pipeline().addLast("chunkedWriter", new ChunkedWriteHandler());