QQ邮箱上传超大文件速度怎么这么快,我上传一个三百多M的电影居然只要两秒钟,请问这是用的什么技术?
解决方案 »
- js问题,求解
- WPF编程:.NetFramework4,明明查到BrushConverter类,里面有成员函数ConvertFromString(String) 。
- VS2005安装部署的问题(自定义对话框)
- 转贴:关于DataGridView中如何接收处于编辑状态下的当前信息
- 关于调用Process路径问题
- 在GDI+中如何指定并删除一个图元?谢,分不够再加。急,谢谢大伙。
- 高分,求救.将Form上的图片和文字拖放到PowerPoint中和EXCEL中
- 十万火急!XmlDocument对象Load()XML文件时不支持GBK编码的文件?
- msn类似的通信工具,如何跨局域网通信? 有什么方案 ?ftp 如何断点续传 ?
- 新建项目时为什么提示我库没有注册??急~~
- 请教openlink virtuoso
- 关于DataTableReader获取的时间的问题
最近qq邮箱经常出一些问题倒是真的。
而你上传后他只是把那个文件弄个副本或者是直接让你这个文件的链接指向那个文件就可以了PS:文件只要没有改动过文件的内容,通过文件的MD5或者Has1是就能对比出相同的文件
这么简单的问题 如果是通用的软件包 电影或者其他的 基本QQ服务器会有别人上传过 就不需要有人传第二次了
如果该文件服务器上没有 你是第一次上传 就很慢了 不会超过300K/s 就算我的迅雷最高可以几M/s
我试了一下,436M的,不到10秒,完成扫描和上传(上传也就2,3秒)
还有我们经常在qq上给好友传东西,也是很快的。
至于程序么,我菜鸟一个, 刚学过c++,正接触c++++呢,呵呵。
如果有真正需要的哥们,付点小费就可以搞定.我也是在一个博客看到的.
http://hi.baidu.com/38809972/blog/item/ff98821b7413a10c8618bf87.html
<?php
include("./Timer.class.php");//timer类用于统计程序运行时间
Timer::getInstance()->start();//开始计时
$big_string = file_get_contents("./test.zip");//读取文件内容
echo "文件大小是:".strlen($big_string)/(1024*1024)."MB<BR>";//输出文件大小
echo md5($big_string)."<BR>";//输出MD5后的字符串
Timer::getInstance()->printTime();//输出耗费的时间
?>输出结果如下:以下是引用片段:文件大小是:487.146002769MB
c9cb9487b71fa2130b5d1110a2819e34
Timer NO:1 Did something in 3.28920602798 seconds;
可以看到,MD5一个487M的文件,只用了3.29秒,比我预想的快了许多。因此,通过“md5('文件内容')”生成“唯一标识符”的方法是完全可行的,效率不会存在问题,我想上面的方法肯定还有优化的空间。QQ的大文件快速上传估计就是通过这样的方式实现的。在上传大文件的时候,先查询下服务器看看文件的“唯一标识符”是否存在,只要这个标识符存在,就不用再上传文件了。扩展:1 由于md5的特性,“md5('文件内容')”也可以用于校验“文件的完整性”和“内容是否有被修改过”,这也是我们下载一些软件时,在旁边能看到MD5效验码的原因。2 APACHE 的 ETAG 实现:APACHE 的 ETAG 是可以自己定义方法的,较普遍的做法是根据文件的内容生成ETAG。因为当有多台web服务器时,以浏览图片为例,想要让浏览器缓存你的图片。但你传到不同服务器上的图片时间不会一致,所以不能用文件的last_modify时间作为cache的参照,这时候就可以采取发送ETAG,ETAG是按照图片内容生成特定字符串的。只要文件内容没有改变,ETAG就不会改变,cache就会有效。