大家在做**開發的時候,都會遇到檔案上傳的問題,其中對上傳檔案的命名大家並沒有通用標準,但隨著上傳檔案越來越多的傳到各種雲儲存的時候,上傳檔名這時候是可以有一些可以優化的小細節的。
其中在阿里雲的文件中清楚的寫著。
oss按照檔名utf-8編碼的順序對使用者資料進行自動分割槽,從而能夠處理海量檔案,以及承載高速率的客戶請求。不過,如果您在上傳大量檔案時,在命名上使用了順序字首(如時間戳或字母順序),可能會導致大量檔案索引集中儲存於某個特定分割槽。
要解決這個問題,就要消除檔名中的順序字首。您可以在檔名字首中引入某種隨機性,這樣檔案索引(以及i/o負載)就會均勻分布在多個分割槽。
簡單的說,就是你上傳的檔案會按著檔名分割槽儲存,太多相似的命名檔案會存在乙個區,當大量io操作的時候效能會下降。
解決的辦法就是用隨機檔名的方式讓強制系統分割槽。
這裡推薦乙個簡單有效的方法,就是把時間戳反轉,由於反轉的時間戳檔名中的前3位數字代表毫秒時間,會有1000種取值。而第4位數字,每1秒鐘就會改變一次。同理第5位數字每10秒鐘就會改變一次。以此類推,反轉檔名後,極大地增強了字首的隨機性,從而將負載壓力均勻地分攤在各個分割槽上,避免出現效能瓶頸,是個簡單有效的優化儲存辦法。
最後送一段反轉時間戳的小**
return string((new date().gettime())).split('').reverse().join('')
更新
上面提供的辦法再遇到陣列重新命名時候因為事件間隔太短,時間不會更新,會出現返回字串不變化的情況,在這個基礎上增加乙個隨機數來保證唯一性。
return string((new date().gettime())).split('').reverse().join('') + math.random()
阿里雲OSS上傳
這種方式相當於自動上傳,可以參考antd官網的給的例子 首先,後端會提供乙個介面,會返回一些上傳到oss需要的類似配置引數 下面的是我們後端同學給返回的引數 1 accessid,對應ossaccesskeyd 2 policy 3 signature 4 host,oss的上傳位址 下面是請求上傳...
檔案上傳 阿里雲OSS 儲存檔案
注意在oss的控制台 跨域管理中設定允許的方法 accesskeyid 輸入你的accesskeyid accesskeysecret 輸入你的accesskeysecret bucket 你的儲存空間名字 function on click upload file console.log file...
最佳實踐 使用阿里雲CDN加速OSS訪問
簡介 使用者直接訪問oss資源,訪問速度會受到oss的下行頻寬以及bucket地域的限制。如果通過cdn來訪問oss資源,頻寬上限更高,並且可以將oss的資源快取至就近的cdn節點,通過cdn節點進行分發,訪問速度更快,且費用更低。如果採用動靜分離的 架構,就能夠解決海量使用者訪問的效能瓶頸問題。阿...