首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么中的请求仍在排队,因为HTTP2协议已经启用?

为什么中的请求仍在排队,因为HTTP2协议已经启用?
EN

Stack Overflow用户
提问于 2018-11-28 07:43:22
回答 1查看 1.2K关注 0票数 1

因为我已经启用了IIS的HTTP2协议,但是主要javascript文件的请求仍然在排队。根据Chrome对排队的解释,我真的不知道这是什么原因。

您可以在这里查看:https://app.youjustgo.com/zh/

排队:

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 18:51:11

HTTP/2意味着可以一次下载更多的资产--而不是它们将被下载。

浏览器对于下载什么以及何时下载有不同的启发。

例如,如果CSS文件需要图像,那么在下载和处理CSS文件(例如忽略预加载)之前,无法请求该图像。因此,在这种情况下,CSS和映像不会并行下载,尽管HTTP/2允许这样做。

另一个问题是<script>标记可以更改页面的内容,因此除非显式标记为async (或defer),否则就是“呈现阻塞”。这意味着,在运行JavaScript标记之前,页面下的任何<script>都不会运行。现在,浏览器可以预先扫描并下载未来的脚本,只是在需要时才运行它们,如果需要的话,如果需要的话,如果以后不需要脚本的话,可能会浪费下载的时间。这取决于浏览器,也许Chrome认为这样做不值得。

看看你的具体网站,你的主页看起来基本上只有脚本标签。您可以研究如何使用异步或延迟并行进行更多的下载,但是如果您想要真正的性能改进,您可能应该回到用JavaScript编写HTML,然后用JavaScript对其进行增强的基础知识,而不是用JavaScript对其进行编码。

我也不知道你的CSS预压有什么意义?

代码语言:javascript
复制
  <link rel='preload' href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css' as="style" onload="this.onload=null;this.rel='stylesheet'" />
  <link rel='preload' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v3.0.2/mapbox-gl-directions.css'  as="style" onload="this.onload=null;this.rel='stylesheet'" />
  <link rel="preload" href="https://npmcdn.com/angular2-toaster@2.0.0/toaster.css" as="style" onload="this.onload=null;this.rel='stylesheet'" />
  <link rel="preload" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css"  as="style" onload="this.onload=null;this.rel='stylesheet'"/>
  <link rel="preload" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css" as="style" onload="this.onload=null;this.rel='stylesheet'"/>

预加载的目的是让浏览器无法立即看到的资产(如上面的图像示例)允许它更早地开始下载。在这里,您使用它预加载CSS。唯一的优点是它不会呈现阻塞,然后使用onload函数来显示它。然而,CSS通常是呈现阻塞的原因--否则你的内容看起来没有样式。而且因为它是预加载的,所以它被请求为高优先级( CSS无论如何都会被请求),所以不确定这会给您带来什么好处,老实说。很困惑..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53514451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档