首页 > 解决方案 > 在托管具有差异加载的 Angular 应用程序时,如何确定可以使用 HTTP 2 Server Push 推送哪些文件?

问题描述

我有一个 Angular 8 应用程序,默认情况下会为每个捆绑包、ES5 和 ES6 版本生成 2 个 js 文件。我想利用 HTTP Push,但我不知道要推送哪个版本。

是否有可能从请求中找出我应该推送哪些捆绑包。

这里开始,为除 IE 之外的所有浏览器推送 ES6 版本似乎是一个安全的选择。有更好的逻辑吗?如何检测 IE 是否在使用中?

编辑:

我完全理解 Angular 差异加载是如何工作的,问题在于它是由浏览器通过决定从提供的版本中获取哪个资源来控制的。现在使用 HTTP 服务器推送,必须决定将哪些资源与客户端一起推送index.html,即在浏览器解析文件并选择js文件版本之前。更多关于服务器推送(通过 Nginx)。

因此,如果我推送一个以后不会使用的版本,那么我最终不会缩短加载时间,而是通过让浏览器下载两个版本来增加它。

标签: angularhttp2server-push

解决方案


  • Angular CLI 从 browserslist 配置中了解浏览器支持范围。
  • 如果应用程序需要支持 ES5 浏览器并且 TypeScript 目标高于 es5,CLI 会自动制作额外的捆绑包以实现兼容性。
  • browserslist 是唯一的事实来源,因此 es5BrowserSupport 将被弃用。

“差分加载”,它让我们不用考虑应用程序的浏览器兼容性。


推荐阅读