HTTP 1.1 GET 请求太快,服务器无法响应导致 TCP 重传
HTTP 1.1 GET requests are too quick for server to respond causing TCP Retransmission
我正在 MCU 上使用 RTOS 制作网络服务器。
网络库使用 HTTP 1.0 并在每次请求后关闭 TCP 套接字并重新侦听。
我正在服务的网页有多个 .js 文件需要在 html 完全加载后加载。
发送 html 内容后,Web 浏览器会立即发送“GET /file.js HTTP/1.1”消息。然后在 Web 服务器最终能够处理它之前,使用 TCP 重传将此消息重传 3 或 4 次。
问题1:这种传输速度快是不是浏览器还在尝试HTTP 1.1协议不关闭连接?来自我们服务器的内容状态回复消息是 HTTP 1.0,但 Web 浏览器不断请求 GET HTTP 1.1。
问题 2:有没有办法告诉 Web 浏览器放慢速度,以免因 TCP 重传而使网络拥塞?
任何建议都有帮助。
完美地发现执行 HTTP/1.1 请求但得到 HTTP/1.0 响应。服务器无法让客户端放慢速度:因为每个新请求都是通过新的 TCP 连接完成的,因此没有可能用于此的 TCP 流量控制。
问题是你的服务器显然不能同时处理多个请求。这意味着服务内容的设计方式应该首先不需要此类请求:与其在同一页面中嵌入多个资源,不如构建站点以仅检索少数资源。例如,这可以通过将多个 Javascript 文件合并为一个文件并过度使用客户端缓存(即设置正确的 Cache-Control headers)来完成。
我正在 MCU 上使用 RTOS 制作网络服务器。 网络库使用 HTTP 1.0 并在每次请求后关闭 TCP 套接字并重新侦听。
我正在服务的网页有多个 .js 文件需要在 html 完全加载后加载。
发送 html 内容后,Web 浏览器会立即发送“GET /file.js HTTP/1.1”消息。然后在 Web 服务器最终能够处理它之前,使用 TCP 重传将此消息重传 3 或 4 次。
问题1:这种传输速度快是不是浏览器还在尝试HTTP 1.1协议不关闭连接?来自我们服务器的内容状态回复消息是 HTTP 1.0,但 Web 浏览器不断请求 GET HTTP 1.1。
问题 2:有没有办法告诉 Web 浏览器放慢速度,以免因 TCP 重传而使网络拥塞?
任何建议都有帮助。
完美地发现执行 HTTP/1.1 请求但得到 HTTP/1.0 响应。服务器无法让客户端放慢速度:因为每个新请求都是通过新的 TCP 连接完成的,因此没有可能用于此的 TCP 流量控制。
问题是你的服务器显然不能同时处理多个请求。这意味着服务内容的设计方式应该首先不需要此类请求:与其在同一页面中嵌入多个资源,不如构建站点以仅检索少数资源。例如,这可以通过将多个 Javascript 文件合并为一个文件并过度使用客户端缓存(即设置正确的 Cache-Control headers)来完成。