我在尝试为嵌入式Wi-Fi网络服务器开发网页时遇到了问题。
打开新的TCP服务器套接字(端口80)时,Web服务器具有内置延迟(大约10毫秒)。打开的新套接字之间的这种延迟导致一些HTTP GET请求被拒绝。
当收到HTTP GET请求时,Web服务器会自动尝试打开新的TCP服务器套接字,以便能够提供新的HTTP GET请求。在此期间,如果Web浏览器尝试打开新的TCP套接字以发送更多HTTP GET请求,则它们可能会收到TCP RST ACK,因为套接字尚未打开。
作为一种解决方法,我必须将所有css,js和图像资源嵌入到单个.html文件中,以防止过多的TCP连接。
这是一个痛苦的问题,因为base64编码所有图像会使HTML真的难以阅读并阻止浏览器将css / js / images存储到缓存中。
在某些网络浏览器上,这不是问题,FireFox和Chrome可以很好地处理RST ACK,只需重试再次加载资源。虽然Internet Explorer和基本上所有移动Web浏览器都将RST ACK视为404错误并将该资源卸载。
我的问题如下,是否有任何方法确保所有资源都能正确加载? 也许是一个遍历整个HTML文档的JavaScript,如果它遇到一个尚未加载的image / css / js资源,它只是重试加载该资源?
连连呢?