射手网的下载方式
的有关信息介绍如下:文件服务器、域名和DNS
射手网采用动态分布式的文件服务。当下载文件时,浏览器将需要调用下列域名:
file0.shooter.cn file1.shooter.cn ... (电信)
cncfile0.shooter.cn cncfile1.shooter.cn ... (网通)
edufile0.shooter.cn edufile1.shooter.cn ... (教育网)
能否正常解析这些域名至正确的IP地址,关系着能否正常访问文件服务器并下载文件。
检查您的系统能否正确解析这些域名,可以使用nslookup命令。方法是通过“开始”菜单,选择“运行...” -> CMD 进入命令行模式,输入 nslookup file0.shooter.cn。 看看系统是否可以正确获得解析IP。
如果系统DNS无法正确获得IP,也可以手动通过修改系统hosts文件,强行为域名指定IP。
中文文件名与“备选模式”
默认下载模式并没有过滤中文文件名,而中文文件名也常常是导致无法正常下载文件的重要原因。这是因为各个OS、服务器和浏览器对网址URL中的中文处理方式都不同。例如繁体系统可能会把中文编码为big5传送,简体系统则会使用gb2312,而比较新的浏览器可能会使用UTF-8,有的下载工具则可能不对中文进行url编码。这样一来,尽管是完全相同的中文文字,对于传送网络请求来说,却有可能变化为4-6种不同的可能。而对服务器来说,只能接受其中的一种。所以,中文文件名也是导致无法正常下载的主要原因。
这也就是为什么射手网有个“备选模式”的下载方式。“备选模式”会过滤掉文件名中的中文文字,将“ABC中文.rar”变换为“ABC.rar”的url以供下载,这样虽然损失了文件名中可能包含的说明信息,但是却可以保证可以正常下载。
关于报告无法跟踪的下载问题
时常有用户Email来报告“某某影片”无法下载,或者“某某软件”无法下载。
这样做带来的问题是,同一部影片或者同一个软件,可能同时有很多不同的版本在提供下载。如果只是含糊的报告,我也无法找到出问题的文件服务。因此,当遇到无法下载时,请提供不能下载的文件ID,或文件URL例如 “http://shooter.cn/file/?fileid=12345”。
什么是hash过期
射手网的文件下载系统的主要设计目的主要是为了,可以无限扩展至多个或许配置并不高的服务器均衡工作,同时又有较高的免维护性。
射手网的服务器通常硬盘都不大,所以下载流程大致是这样:1. 主服务器收到下载请求,针对该文件生成hash码作为ID,同时命令文件服务器准备该文件;2. 用户访问文件服务器并提供hash码ID;3. 文件服务器将对应的文件调入服务器上的下载目录,并供下载;4. hash过期后,将对应文件清出文件下载目录。
采用这样的下载流程主要是为了在服务器空间有限的情况下,有控制的最大限度的合理利用资源。但是这也带来一个附加条件,就是一个hash码是有时限的,如果一个hash码的生命期已经结束,就会文件服务器就会提示hash码已经过期而不能下载,而需要重新回到网站请求文件并获得新的下载链接(部分浏览器可能会缓存网页链接而使用户得到的是旧hash码而导致无法下载,此时可以通过清空浏览器缓存或刷新网页解决)。