将 HTTP/2 与 angularJS 一起使用

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

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

以上是关于将 HTTP/2 与 angularJS 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用

如何将 LiveReload 与 AngularJS 模板 URL 一起使用

我们应该将 jQuery 与 AngularJS 一起使用吗? [关闭]

在哪里以及如何将 nodejs 与 angularjs 一起使用

是否可以将 AngularJS 与 Jinja2 模板引擎一起使用?

将 Django URL 与 AngularJs routeProvider 一起使用