http2如何控制资源加载的优先级?

在查看一些文章的时候,通常会看到这样一条特性http2可用优先加载某些重要的资源,但是不知道如何实现

在http1.1中script标签可以设置async和defer属性来延迟script脚本的加载。
css可以通过设置rel属性为 proload或者prefetch来进行预加载,变相的控制了资源的加载,这些都是一些实际的手段。

但是http2优先加载重要资源的特性好像只存在理论当中,没有查到具体的操作。

http2的push算是优先加载重要资源吗?除此之外还有没有其他方法?

阅读 7.2k
1 个回答

这是应用协议层的事儿,需要前(浏览器)、后(Web Server,如 nginx)两端的支持。

由浏览器根据资源类型、在发起 GET 请求时自动向 HTTP/2 的 PRIORITY 帧中追加优先级信息,对前端开发者来说是不透明的。

当然,你也可以自行实现一个 Web Server,按照自己理想的方式去解析 TCP 报文并调整优先级顺序;但浏览器一方你还是调整不了。

目前只有 Chrome(51 版本后) / Firefox(53 版本后) 支持,并且二者对于同样类型文件的给定优先级并不相同,但大体来说都是 HTML > CSS > Blocking Script > Font >= Image >= Async Script。

下面截图是 Chrome 开发者工具中有关优先级的显示。

image.png

参考:https://blog.cloudflare.com/b...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题