在查看一些文章的时候,通常会看到这样一条特性http2可用优先加载某些重要的资源,但是不知道如何实现
在http1.1中script标签可以设置async和defer属性来延迟script脚本的加载。
css可以通过设置rel属性为 proload或者prefetch来进行预加载,变相的控制了资源的加载,这些都是一些实际的手段。
但是http2优先加载重要资源的特性好像只存在理论当中,没有查到具体的操作。
http2的push算是优先加载重要资源吗?除此之外还有没有其他方法?
在查看一些文章的时候,通常会看到这样一条特性http2可用优先加载某些重要的资源,但是不知道如何实现
在http1.1中script标签可以设置async和defer属性来延迟script脚本的加载。
css可以通过设置rel属性为 proload或者prefetch来进行预加载,变相的控制了资源的加载,这些都是一些实际的手段。
但是http2优先加载重要资源的特性好像只存在理论当中,没有查到具体的操作。
http2的push算是优先加载重要资源吗?除此之外还有没有其他方法?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
这是应用协议层的事儿,需要前(浏览器)、后(Web Server,如 nginx)两端的支持。
由浏览器根据资源类型、在发起 GET 请求时自动向 HTTP/2 的 PRIORITY 帧中追加优先级信息,对前端开发者来说是不透明的。
当然,你也可以自行实现一个 Web Server,按照自己理想的方式去解析 TCP 报文并调整优先级顺序;但浏览器一方你还是调整不了。
目前只有 Chrome(51 版本后) / Firefox(53 版本后) 支持,并且二者对于同样类型文件的给定优先级并不相同,但大体来说都是 HTML > CSS > Blocking Script > Font >= Image >= Async Script。
下面截图是 Chrome 开发者工具中有关优先级的显示。