推送资产的HTTP2延迟与未推送的资产相比

时间:2017-10-24 10:18:36

标签: http http2 server-push

我在我的网站上实施HTTP / 2推送。在使它工作之后,我对我得到的瀑布感到有些惊讶。我在Chrome中启用限制功能以降低3G"更准确地了解正在发生的事情。

我推动4个资产(按此顺序):

  1. home.min.css(12kB)
  2. front_layout.css(213kB)
  3. front_home.css(8kB)
  4. front_layout.js(360kB)
  5. 这是我在加载过程中得到的: enter image description here 您可以看到我推送的两个最大的文件是"待定"。我可以理解这一点,因为即使主HTML文档还没有完成加载。但问题是其他非推送资产(下面的2张图片)已经加载!如果推出的资产没有开始加载,而非推送资产是否已完成加载,该怎么可能?

    请注意,推送资产的蓝色部分定义为"阅读推送",而旧样式请求的蓝色部分定义为"内容下载"。这可能是Chrome Inspector的绘图错误吗?或者我不理解的内容下载和阅读推送之间的细微差别?

    让我们稍后看一下装载,它更令人惊讶: enter image description here 主HTML文档的结尾与一个推送资产的开始之间存在奇怪的延迟。在我看来,推出的资产将在主要响应数据之后出现,我不知道这个~8秒延迟来自何处。我错过了什么?

    在页面加载时,这是我得到的: enter image description here

    所以:

    1. 大型推送资产在其他非推送资产之后开始下载
    2. (最后一行)另一个域上的一张大图像(340kB,与我的大型推送资产相同)在推送资产之前完成加载(点击速度下载较慢)。
    3. 我使用Fast 3G获得相同的图表。只有当我完全禁用限制(在我自己的机器上运行)时,我才能得到我期望的结果:

      enter image description here

      我对发生的事感到困惑。在我的情况下,HTTP2是一件好事吗?

      我阅读了很多关于http2如何正常工作的文章,但我真的无法理解我的情况。欢迎任何见解!

      非常感谢!

1 个答案:

答案 0 :(得分:0)

我还注意到,我的index.html和推送的资源之间存在神秘的鸿沟。当浏览器完成下载文件时,index.html蓝色栏的末端。然后,它需要解析HTML,一旦它遇到需要推送资源的地方,它将开始请求它。所以我想差距在于浏览器可以解析HTML并做一些后台工作(例如,加载HTML,分配空间...)

我不确定这是否是正确的解释,但希望它可以为您提供一些见识(毕竟,在这段时间里……或者如果您确实找到了答案,请与我们分享!)