使用時間戳命名檔案遇到的坑

2021-09-12 06:18:11 字數 561 閱讀 2429

最近寫了乙個檔案上傳的介面,從流中讀出檔案,將其儲存成指定的檔案型別,檔名以當前系統的時間戳命名。寫完自測,沒有問題,

就提交**了。但是今天測試的同事反饋,有個業務需要上傳多張,當很小時,會出現問題(無法開啟,或多個請求返回的

名稱相同),經過反覆除錯分析,找到原因。

上傳多次時,呼叫方使用多執行緒來處理,這樣就會在同一節點請求介面,當檔案特別小的時候,程式讀取速度很快,導致獲取檔案

名會重複,如果第乙個請求處理完,生成乙個路徑,第二個請求完發現此路徑已存在,就會將其覆蓋,這樣會出現多張相同的

情況;如果第乙個請求在生成過程中,第二個請求也開始生成,就會導致兩個流向乙個檔案輸入,最後生成,導致這個圖

片損壞不可訪問,出現多張都不顯示的問題。

1.檔名不使用system.currenttimemillis(),改為system.nanotime()。毫秒級可能會產生請求併發,納秒級存在的可能性為0

2.檔名使用uuid。檔名可能有點長

3.使用鎖機制。

Ajax要使用時間戳提交

當你的ajax需要的資料是及時更新的,也就是說在沒有重新整理頁面的情況下,得到其他操作的新資料,你的ajax提交url中加入乙個時間戳,這樣,就可以避免頁面使用快取了,原理是 時間戳本事就是乙個隨時更新的變數,時間戳只是乙個叫法,你可以這麼理解 你的url中加了乙個隨時更新的變數,那麼,提交時是不會...

使用時間戳解決ie快取的問題

在開發測試中,如果選擇ie,當編輯某條資料時,再回過頭來進行編輯,會發現,裡面的資料和沒有編輯以前是一樣的,這和種情況下,解決ie快取成了問題。我的方法是,在請求鏈結後面加上乙個時間戳,就只可以避免這種問題的出現。複製 vnernasgqi如下 var gettimestamp new date g...

使用時間戳解決瀏覽器快取問題

在ie或者其他的很多瀏覽器中,如果你每次請求的位址是相同的,瀏覽器就不會去連線伺服器而是去讀取快取,這樣對於很多應用來時是非常好的,可以降低伺服器的壓力或者減少頻寬的使用,但是對於ajax應用,很多都是必須保持時時的連線與伺服器進行互動,所以需要使用乙個小技巧,時間戳來使每次的請求位址都不同,從而跳...