angular - 我们可以 HTTP 2 服务器推送其他 CDN 中的资产吗?
问题描述
目前,我的 Angular 应用程序的 index.html 文件是从 tomcat 服务器(Apache Coyete)生成的。index.html 文件由指向我们自己的 CDN 的 js、css 和图像组成。例子:
<script src="https://mc1.mcdn.in/main.adjhf432hjh23k44.js" />
假设我想服务器推送“ https://mc1.mcdn.in/main.adjhf432hjh23k44.js ”文件。是否可以服务器推送 CDN 链接?另外,有没有办法服务器推送所有匹配模式的文件?像 main.{hash}.js polyfills.{hash}.js 等
解决方案
您只能从对资源域具有权威性的连接推送项目。从 HTTP/2 规范:
客户端必须将服务器不具有权威性的 PUSH_PROMISE 视为 PROTOCOL_ERROR 类型的流错误...
因此,如果索引文件也通过 CDN 提供服务,那么您可以在该连接上推送静态资产。但是,如果 index.html 是从单独的域和 IP 地址提供给资产的,那么它们就不能被推送。
鉴于 HTTP/2 推送的复杂性和浏览器支持,您可以使用预加载资源提示来确定项目(尤其是后期发现的资源)的优先级,许多人建议将其设置为四个。
推荐阅读
- python - 使用 AWS X-Ray 在 Django 中跟踪 Celery 任务
- java - 即使配置的限制为 50,log4j 仍停留在最多 13 个文件?
- vim - 点文件中不匹配的“.” - 点文件中“的功能是什么?
- c++ - uint8_t 和 unsigned char 之间的混淆
- python - Django - 分配经过身份验证的用户发布(自动)
- javascript - 创建队列时如何解决rsmq队列已经退出错误?
- swift - SwiftUI - 键盘启动后选择时选择器冻结
- powershell - 在 azure devops 管道中使用时间戳变量
- arrays - VBA变量不引用数组
- c++ - 使用 libcurl 将返回的数据存储在 shared_ptr 中