angular - 在托管具有差异加载的 Angular 应用程序时,如何确定可以使用 HTTP 2 Server Push 推送哪些文件?
问题描述
我有一个 Angular 8 应用程序,默认情况下会为每个捆绑包、ES5 和 ES6 版本生成 2 个 js 文件。我想利用 HTTP Push,但我不知道要推送哪个版本。
是否有可能从请求中找出我应该推送哪些捆绑包。
从这里开始,为除 IE 之外的所有浏览器推送 ES6 版本似乎是一个安全的选择。有更好的逻辑吗?如何检测 IE 是否在使用中?
编辑:
我完全理解 Angular 差异加载是如何工作的,问题在于它是由浏览器通过决定从提供的版本中获取哪个资源来控制的。现在使用 HTTP 服务器推送,必须决定将哪些资源与客户端一起推送index.html
,即在浏览器解析文件并选择js
文件版本之前。更多关于服务器推送(通过 Nginx)。
因此,如果我推送一个以后不会使用的版本,那么我最终不会缩短加载时间,而是通过让浏览器下载两个版本来增加它。
解决方案
- Angular CLI 从 browserslist 配置中了解浏览器支持范围。
- 如果应用程序需要支持 ES5 浏览器并且 TypeScript 目标高于 es5,CLI 会自动制作额外的捆绑包以实现兼容性。
- browserslist 是唯一的事实来源,因此 es5BrowserSupport 将被弃用。
“差分加载”,它让我们不用考虑应用程序的浏览器兼容性。
推荐阅读
- graphql - 如何基于GraphQL在nestjs中实现Auth0策略
- regex - 从字符串 Google 表格中提取文本
- azure - 天蓝色计算将事件推送到 Azure EventGrid 的速度是否很慢?有没有办法更快地获取事件?
- android - 如何在点击Android时更改按钮?
- cloud-foundry - Space Drain 无法重新暂存:无法从 UAA 获取令牌
- android - 如何在flutter run和flutter build之前运行脚本
- python - AWS Python Shell - 如何使用 Glue 目录连接
- algorithm - 找出数组中最大的三个元素
- java - 从 TEXT_DETECTION 返回的 JSON 文件格式不正确
- javascript - 为什么输入元素会增加弹性容器的宽度?