HTTP:图片未完全接收。如何避免这种情况,即强制浏览器重试?

HTTP:图片未完全接收。如何避免这种情况,即强制浏览器重试?,http,httpconnection,content-length,http-content-length,Http,Httpconnection,Content Length,Http Content Length,我写了一个小的图片脚本,它显示了一个带有缩略图的目录列表以及图片的预览 在某些情况下,当您单击多个图像预览时(您也可以使用向左/向右箭头键来更快地执行此操作),某些图像无法完全加载(并且仅部分显示) 我想这已经开始出现更多的时候,因为我预装了接下来的几张照片,但它也出现过。如果您快速切换图像,这种情况也最常见 我想知道为什么会出现这种情况,以及如何避免这种情况。我猜浏览器可能会以某种方式断开与服务器的连接(或者服务器出于某种原因意外关闭)。因此,我试图通过设置内容长度来解决这个问题(我

我写了一个小的图片脚本,它显示了一个带有缩略图的目录列表以及图片的预览

在某些情况下,当您单击多个图像预览时(您也可以使用向左/向右箭头键来更快地执行此操作),某些图像无法完全加载(并且仅部分显示)

我想这已经开始出现更多的时候,因为我预装了接下来的几张照片,但它也出现过。如果您快速切换图像,这种情况也最常见

我想知道为什么会出现这种情况,以及如何避免这种情况。我猜浏览器可能会以某种方式断开与服务器的连接(或者服务器出于某种原因意外关闭)。因此,我试图通过设置
内容长度
来解决这个问题(我希望如果文件没有完全接收到,浏览器会自动重新连接),但这没有帮助


此外,在浏览器中,正常重新加载页面也无济于事,我必须强制完全重新加载。

无法在IE8/WinXP-SP3中重复此行为-您使用的浏览器是什么?@DaveRandom:Chrome。但我也在Firefox中看到过。现在,我也无法复制它。我真的没有找到任何可靠的方法来复制它。但是,在高负载情况下,这种情况似乎更常见。此外,我会使用AJAX而不是
预取来完成此操作,以消除那些难看的页面重新加载,并且您可以在更新显示之前等待
AJAX.readyState=4
,这将有助于确保图像在显示之前已完全下载。以
base64\u encode()
ed格式发送图像,您只需执行
image.src=“data:image/gif;base64,”+ajax.responseText;//根据需要更改MIME类型
。您甚至可以在服务器端生成整个字符串以简化MIME类型的处理。将其作为base64发送将浪费大量带宽。此外,即使预取未完成,用户也应该能够切换图像。另外,我想更新每个新图片的URL。我想在某些浏览器上,我无法避免重新加载页面。对不起,当我说“刷新页面”时,我的意思是“将url更改为下一个图像”。这一点应该更清楚。我想你得到的是,当你跳过多个图像时,这会减慢导航速度,因为每个页面加载3个图像(这一个,最后一个,下一个),这是因为它确实。。。如果你跟着。这可能不是正确的解决方案,你是对的。我可能会让Wireshark出来看看当你遇到问题时到底发生了什么——例如,是谁提前关闭了连接,是服务器还是客户端(如果有的话)。