IOS Safari随机慢映像加载IISNODE



我在node.js上有一个网站。我用IISNODE托管该应用程序。

我有一个页面,该页面以Pinterest之类的样式显示大量照片。图像被加载为普通<img />,并将适当的SRC附加到DOM上。这些图像是服务器上普通的静态资源。

所有图像几乎立即在最新的Windows Chrome,Android Chrome甚至IOS Chrome上加载。

然而,在iOS Safari上,对于每百张照片,随机,一两个照片将不会立即加载,相反,这些照片将在约20-30秒内加载。Safari开发人员调试器说,该图像请求有20-30秒的延迟。

如果我不使用iisnode并直接使用node.exe作为Web服务器,则该问题将不存在。我怀疑IISNode和IOS Safari之间存在一些奇怪的兼容性问题。在我看来,iisnode在iOS Safari中触发了阻塞HTTP连接的某些东西。

此问题的原因是什么?

情况与HTTP标头连接有关:keep-alive

iis设计不包括响应标头连接:keep-alive ,因此IISNode在这里也不例外。对于桌面浏览器和Android浏览器,这种行为可能是可以的。但是,没有连接:keep-alive 似乎ios Safari会遇到一个我会称呼TCP剥夺的情况。已经达到了开放连接的总数。我个人认为该理论解释了20-30秒的延迟行为。在20-30秒结束时,终于关闭了旧的连接并可以建立新的连接。

iOS Safari和Iisnode的组合引起了问题。由于无法使IIS包括连接:keep-alive 。直接在没有IISNODE代理层的情况下直接将所有内容提供在Node.exe中。

最新更新