日期:2014-05-17  浏览次数:20979 次

最近在做文件分块传输,请问有没有根据文件体积和当前网络状态智能分配文件块大小的公式?
经过测试, 如果文件块分得太小, 比如每次读取1024字节,也就是1K,在网速慢的情况下,差异不大。
但网速很快的环境中, 1K, 与100k 的区别就很明显了。
所以分块是不是应该智能判断,而不是写在配置文件中?
另外想问问有没有根据网速和文件体积来计算分块大小的公式呢?

------解决方案--------------------
一般的磁盘,在128KB以上,读写和连续读写的差别就不大了


你可以用atto这个软件测试下。
------解决方案--------------------
640k(而不是1024)比较适中。
------解决方案--------------------
在非常不好的网络上,例如10年前的通过中国移动GPRS联网,可能取32k就比较适中(而不是1024)。
------解决方案--------------------
那你得先判断网络速率,再动态分配要上传的文件字节,建立一个对应表。

------解决方案--------------------
如果是TCP,一般不用考虑文件分块。
如果是UDP,由于包大小则受限于UDP协议(<64K),也不用考虑分块大小,而是考虑每秒传几个包。