如何解决HTTP 1.1 GET 请求对于服务器响应太快导致 TCP 重传
我正在 MCU 上制作带有 RTOS 的网络服务器。 网络库使用 HTTP 1.0 并关闭 TCP 套接字并在每次请求后重新侦听。
我提供的网页有多个 .js 文件,需要在 html 完全加载后加载。
发送 html 内容后,Web 浏览器会立即发送“GET /file.js HTTP/1.1”消息。在 Web 服务器最终能够处理它之前,此消息会通过 TCP Retransmission 重传 3 或 4 次。
问题 1:这种快速传输是否是由于 Web 浏览器仍在尝试未关闭连接的 HTTP 1.1 协议?来自我们服务器的内容状态回复消息是 HTTP 1.0,但 Web 浏览器不断使用 HTTP 1.1 请求 GET。
问题 2:有没有办法让 Web 浏览器放慢速度,以免 TCP 重传造成网络拥塞?
任何建议都有帮助。
解决方法
执行 HTTP/1.1 请求但返回 HTTP/1.0 响应是完美的选择。服务器无法让客户端减速:由于每个新请求都是通过新的 TCP 连接完成的,因此没有可能用于此的 TCP 流量控制。
问题在于您的服务器显然无法同时处理多个请求。这意味着所提供的内容应该以一种不需要此类请求的方式设计:而不是在同一页面中嵌入多个资源,站点应该构建为仅检索少数资源。例如,这可以通过将多个 Javascript 文件合并为一个文件并过度使用客户端缓存(即设置正确的 Cache-Control 标头)来实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。