現在例如有一個業務需求是客戶更新圖片,那我們需要及時更新,可是正常的上傳是無法及時更新的,因為七牛雲會有客戶端緩存和cdn緩存,這時候可能有多種處理方式:
1.cdn和客戶端緩存的時間調短,例如1分鍾,這樣每分鍾就都會更新,我們覆蓋上傳文件后一分鍾后就能查看到新的。
優點:操作方便。
缺點:這會導致七牛雲的回源流量增多,數據量大的情況下會增加很多費用。
七牛雲的雲文件讀取機制如下:
2.每次更新的時候,更改文件名,如果上傳成功,則刪掉老文件。
優點:也能成功。
缺點:有點麻煩
3.每次覆蓋上傳,然后調用刷新接口:
優點:不是很難處理,也能實現
缺點:調用刷新接口后也要等七牛雲的隊列處理,有時候會阻塞很久,因為是隊列處理也是異步。
4.(推薦)每次上傳還是覆蓋上傳,然后將文件名加上更新時間參數進行訪問,並且隨機參數只有在更新的情況下會更新,也就是說要把這個文件名加更新時間保存起來,例如:
第一次傳,文件名:‘a.jpg’,域名:www.bcd.com ,更新時間:20230809115402,在不更新的情況下,往后訪問的外鏈就一直是‘http://www.bcd.com/a.jpg?20230809115402’
第二次更新,文件名:‘a.jpg’,域名:www.bcd.com ,更新時間:20230810185402,在不更新的情況下,往后訪問的外鏈就一直是‘http://www.bcd.com/a.jpg?20230810185402’。
缺點:需要把隨機數也保存起來
優點:及時更新就能及時訪問到,並且cdn溯源流量只在更新的時候會產生,其他時候不會產生,並且是覆蓋文件,所以不需要刪除老文件。