0

我正在 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:有没有办法让网络浏览器放慢速度,这样它就不会因为 TCP 重传而阻塞网络?

任何建议都是有帮助的。

4

1 回答 1

0

做一个 HTTP/1.1 请求但得到一个 HTTP/1.0 响应是完美的。服务器没有办法说客户端放慢速度:因为每个新请求都是通过新的 TCP 连接完成的,所以没有可能用于此的 TCP 流控制。

问题是您的服务器显然无法同时处理多个请求。这意味着所服务的内容的设计方式应该首先不需要此类请求:而不是在同一页面中嵌入多个资源,而应该构建站点以仅检索少数资源。例如,这可以通过将多个 Javascript 文件合并为一个文件并过度使用客户端缓存(即设置正确的Cache-Control标头)来完成。

于 2021-02-05T11:15:18.927 回答