楼主是希望比较单线程和多线程哪个更快, 所以前提应该是网络条件相同, 在单机模拟, 反而能最大限度的达到网络条件相同, 如果在网络上模拟, 特别是让朋友从外部来上传, 那两次上传时的网络情况有太多的因素导致不相同了. 所以我觉得楼主的试验结果是有效的. 没有必要再用真实网络环境来测试, 那反而是没有价值的.
而且我觉得楼主对结果的分析也是正确的, 但是这引出另一个问题, 就是稳定性. 在多线程的例子里, 20秒后页面就重定向了, 那么你怎么保证另外还在运行的线程如果出错了, 怎么办? 客户端不可能再得到你的信息了, 这说明后台开多线程是不可行的.
其实我觉得从原理上分析, 如果客户端要上传10M的文件, 带宽是固定的, 所以花费的时间也就固定了, 跟马路上车的通行是一样的, 跟后台没有关系. 只不过象你的试验, 可以提前让客户转到别的页面, 看似速度快了, 但牺牲的是稳定性, 相比稳定性和速度, 稳定性无疑是第一位的.
我觉得楼主应该用AJAX来做, 比如客户要上传5个文件, 那选择完一个文件后就马上上传, GAMIL就是这么做的, 这样等于提前开始上传, 而不是等客户选择完5个文件后才开始上传, 所以变相的相当于提高速度, 当然你还可以在服务器端用多线程, 以提高项目的含金量, :-).
欢迎指正.
而且我觉得楼主对结果的分析也是正确的, 但是这引出另一个问题, 就是稳定性. 在多线程的例子里, 20秒后页面就重定向了, 那么你怎么保证另外还在运行的线程如果出错了, 怎么办? 客户端不可能再得到你的信息了, 这说明后台开多线程是不可行的.
其实我觉得从原理上分析, 如果客户端要上传10M的文件, 带宽是固定的, 所以花费的时间也就固定了, 跟马路上车的通行是一样的, 跟后台没有关系. 只不过象你的试验, 可以提前让客户转到别的页面, 看似速度快了, 但牺牲的是稳定性, 相比稳定性和速度, 稳定性无疑是第一位的.
我觉得楼主应该用AJAX来做, 比如客户要上传5个文件, 那选择完一个文件后就马上上传, GAMIL就是这么做的, 这样等于提前开始上传, 而不是等客户选择完5个文件后才开始上传, 所以变相的相当于提高速度, 当然你还可以在服务器端用多线程, 以提高项目的含金量, :-).
欢迎指正.