http 文件上传 在ie浏览器下 耗时特别长
当使用 HTTP 文件上载功能上载大小为几兆字节的文件时,上载操作需要很长时间才能完成。
项目中做了个上传视频的文件的功能,在firefox浏览器下 试了下 上传个500m个文件 耗时1:10秒 感觉还可以接受。 但是在Ie浏览器下 却要四分多钟, 特别的慢, 但是查看代码 也没发现有什么问题啊。 该设置缓冲区的地方 设置了缓冲区 该flush的地方flush了。 但就是特别的慢。 而且firefox和chrome下 都还行 就是用IE特别慢。
本来觉的慢就慢吧,不用IE就是了, 但是项目是基于ie开发的,必须支持ie, 用其他浏览器上传 有问题 可以说是 浏览器的问题 可以不解决 但ie的文件 必须解决 哎!
没办法 只能 baidu google goole baidu..... 了 。 (再说 不解决 也不属于咋们程序员的工作态度啊 O(∩_∩)O哈哈~ 扯的有点远)
最后总要发现了 原来是IE浏览器的问题。 因为微软在系统中做了个限定, 在文件上传的时候 缓冲区默认设置为8kb。 太小了 所以就很慢了
加大他的值 速度就上去了 花花的 呵呵。 局域网内上传个500M的视频文件耗时 1:05秒。
解决方法 :
- 启动注册表编辑器 (Regedt32.exe)。
- 找到并单击以下注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- 在编辑菜单上,单击添加值,然后添加以下注册表值:
数值名称: SocketSendBufferLength缓冲区大小值选项:
数据类型: REG_DWORD
基数:十进制
数值数据:所需的缓冲区大小(以字节为单位)16 KB 缓冲区 = 16384
24 KB 缓冲区 = 24576
32 KB 缓冲区 = 32768
40 KB 缓冲区 = 40960
48 KB 缓冲区 = 49152
56 KB 缓冲区 = 57344
64 KB 缓冲区 = 65536 - 退出注册表编辑器
至于SocketSendBufferLength的值设多大合适 还是自己去测试 比较好 我设的是256kb.
参考资料: http://support.microsoft.com/kb/329781/zh-cn