我在我的网站上实施HTTP / 2推送。在使它工作之后,我对我得到的瀑布感到有些惊讶。我在Chrome中启用限制功能以降低3G"更准确地了解正在发生的事情。
我推动4个资产(按此顺序):
这是我在加载过程中得到的: 您可以看到我推送的两个最大的文件是"待定"。我可以理解这一点,因为即使主HTML文档还没有完成加载。但问题是其他非推送资产(下面的2张图片)已经加载!如果推出的资产没有开始加载,而非推送资产是否已完成加载,该怎么可能?
请注意,推送资产的蓝色部分定义为"阅读推送",而旧样式请求的蓝色部分定义为"内容下载"。这可能是Chrome Inspector的绘图错误吗?或者我不理解的内容下载和阅读推送之间的细微差别?
让我们稍后看一下装载,它更令人惊讶: 主HTML文档的结尾与一个推送资产的开始之间存在奇怪的延迟。在我看来,推出的资产将在主要响应数据之后出现,我不知道这个~8秒延迟来自何处。我错过了什么?
所以:
答案 0 :(得分:0)
我还注意到,我的index.html和推送的资源之间存在神秘的鸿沟。当浏览器完成下载文件时,index.html蓝色栏的末端。然后,它需要解析HTML,一旦它遇到需要推送资源的地方,它将开始请求它。所以我想差距在于浏览器可以解析HTML并做一些后台工作(例如,加载HTML,分配空间...)
我不确定这是否是正确的解释,但希望它可以为您提供一些见识(毕竟,在这段时间里……或者如果您确实找到了答案,请与我们分享!)