问题背景:有一个文件列表,端上下载文件明明显示下载成功了,但打开就是有问题
排查:服务端源文件和端上的下载逻辑,没有发现问题
继续排查:发现服务端配置列表里面有两个文件地址是完全一模一样的。由于端上对文件的识别标识是下载链接的md5,所以这俩文件地址/命名是完全一样的。
但端上的多文件下载肯定是异步并行的,所以在这个场景下就存在一个读写安全问题,存在两个线程同一时间操作同一个路径下的同一个文件,由于支持断点下载,导致了文件整体包错乱,出现了问题。
解决方案:
1、下载请求和文件绑定,用cache存储,防止同一时间下载
2、文件命名绑定时间戳,确保文件的唯一性
网友评论