問題背景:有一個文件列表,端上下載文件明明顯示下載成功了,但打開就是有問題
排查:服務端源文件和端上的下載邏輯,沒有發現問題
繼續排查:發現服務端配置列表里面有兩個文件地址是完全一模一樣的。由于端上對文件的識別標識是下載鏈接的md5,所以這倆文件地址/命名是完全一樣的。
但端上的多文件下載肯定是異步并行的,所以在這個場景下就存在一個讀寫安全問題,存在兩個線程同一時間操作同一個路徑下的同一個文件,由于支持斷點下載,導致了文件整體包錯亂,出現了問題。
解決方案:
1、下載請求和文件綁定,用cache存儲,防止同一時間下載
2、文件命名綁定時間戳,確保文件的唯一性