【问题标题】:Using HTTP/2 with angularJS将 HTTP/2 与 angularJS 一起使用
【发布时间】:2018-10-17 01:37:18
【问题描述】:

当我偶然发现 HTTP/2 时,我正试图找出提高 Web 应用程序性能的方法。在阅读有关它时,我知道它具有很多提高网站性能的功能。

谈到它的实现部分,我发现您只需将浏览器升级到最新版本即可使用。由于我的浏览器已经是最新版本,我看到我的所有资源——CSS、JS 和 HTML 文件都使用 HTTP/2 提供。但是,我使用 angularJS 进行的数据查询仍然使用 HTTP/1.1。这是我的问题。

  1. 如何让我的数据查询使用 HTTP/2 协议?是否必须在标头中添加额外的参数?

  2. HTTP/2 是否会放弃浏览器的每个域的 6 个并发请求限制?我可以发出 6 个以上的并行 ajax 请求吗?

我在客户端使用 angularJS。我的请求通过 Cloudflare 到达 Play Framework 提供的服务器。

【问题讨论】:

    标签: javascript angularjs http2 web-performance


    【解决方案1】:

    如果客户端(浏览器)和网络服务器都支持 HTTP/2,那么它将被使用。您的前端 JavaScript 不需要任何区别 - 如果可以,浏览器会自动使用它。

    所以我猜您的“数据”查询与您的常规查询在不同的域上,并且该域不支持 HTTP/2。

    是的,HTTP/2 显着增加了并行请求的数量。 100 个飞行中的“流”是一种常见的服务器设置。然而,这确实带来了所有有趣的挑战:例如,Chrome 发现它在同时发生这么多请求时处理效率低下,并且有一段时间一次限制为 6 个 HTTP/2 请求。此外,一些较低优先级的请求(例如折叠图像下方)可以使用更好地用于更高优先级请求的带宽(例如折叠图像上方)。 HTTP/2 有依赖和优先级的概念,但并不是每个浏览器都使用它们。

    一旦你进入它,这是一个引人入胜的话题。

    【讨论】:

    • 是的,我的数据查询位于不同的域中。我需要找出为什么该域不支持 HTTP/2。非常感谢您的帮助。
    • 但是我对第二点不是很清楚。使用 HTTP/2,chrome 的 6 个并行请求限制将消失,对吧?
    • 是的,因为您可以使用 HTTP/2 在同一连接上发送多个请求,而您必须为多个连接打开更多连接(该浏览器限制为 6 个)。有关更多信息,请参阅我的答案:stackoverflow.com/questions/36517829/…。然而,虽然 6 的限制大幅增加(通常为 100),但它并不是完全无限的,并且现在已经看到了其他副作用,限制增加了。有关这方面的更多详细信息,您可以查看我关于该主题的书:manning.com/books/http2-in-action
    猜你喜欢
    • 2020-05-24
    • 2015-02-02
    • 1970-01-01
    • 2018-10-20
    • 2016-05-29
    • 1970-01-01
    • 2014-10-12
    • 2014-10-06
    • 2013-01-25
    相关资源
    最近更新 更多