使用块编码(chunked)的好处

摘自:《高性能网站建设进阶指南》

1、通过块编码,HTML文档可以被分成多个数据块返回,每个响应的数据块都以标识其大小的指示符为开头。这就允许浏览器在下载数据包后立马立马进行解析,使得页面的加载速度更快;(因为大多数浏览器都是在HTML文档加载完毕才开始渲染页面,并同时下载页面上的资源;在采用块编码时,PHP采用flush函数立即刷新缓冲区,这样浏览器在只加载完少量HTML文档后,就开始进行渲染和资源下载,所以提高了页面的展现速度);

2、如果不采用块编码,响应必须包含一个Content-Length的头信息。这就意味着服务器在将整个响应组合在一起,并计算出大小之前,是不会开始发送响应信息。通过块编码,服务器可以尽早发送响应,因为它只需要知道每个发送块的大小即可;

3、某些情况下,我们无法知道在创建HTML文档之前知道是否需要一个头,或者它的具体内容应该是什么。通常,这些头必须在响应的最开始发送,这就意味着服务器在这些耗时操作的数据库查询或web服务调用结束前,是无法发送响应的。然而,当使用块编码后,这些头就可以被延迟发送。最开始的块会被立即发生,在这个块中会通过Trailer头来列举出那些将会被延迟发送的头。

例如:

Trailer: Cookie

Trailer: ETag

4、Bigpipe中主要利用块编码来让浏览器与服务器进行并行处理,让浏览器在接收数据的同时可以同时并行的去渲染页面;

V4版微博中便是采用了Chunked编码与Bigpipe技术的结合,有效的加快了页面的TTI时间;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP chunked编码是HTTP协议传输数据的一种方式,其本质上是将数据分成若干个小进行传输,每个小包含一定量的数据,以及用于表示数据长度的十六进制数字。 Java提供了一些类和方法来解码HTTP chunked消息。在Java中,可以使用HttpURLConnection类中的getResponseCode()方法来获取HTTP响应的状态码。如果响应状态码为200,则可以使用getInputStream()方法来获取响应内容。此时,需要创建一个新的GZIPInputStream对象,并将getInputStream()的返回值作为参数传入。如果HTTP响应使用chunked编码,则需要使用ChunkedInputStream类进行解码。此类继承了FilterInputStream类,并在read()方法中自动处理chunked格式。 在Java中,可以使用Apache HTTP Components库进行HTTP chunked编码的解码。具体来说,可以使用ChunkedInputStream类或者ChunkedEntity类来对chunked编码的HTTP响应消息进行解码。可以通过调用ChunkedInputStream类的read()方法来读取数据并将其解码。这个类可以处理chunked编码格式的消息,并自动进行解码。另外,ChunkedEntity类也可以实现HTTP chunked编码的解码,它可以将HTTP实体转换为一个正常的输入流。如果要使用该类进行解码,则需要创建一个HttpEntity对象,并将其作为参数传入ChunkedEntity类的构造函数中。 总之,使用Java进行HTTP chunked编码的解码相对比较简单,开发人员只需要了解Java中提供的类和方法,并说明消息所采用的编码格式,就可以比较轻松地实现解码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值