2013-02-24 16 views
1

我很難決定如何處理用戶生成的上載,而無需在數據庫中存儲文件名值。當用戶上傳說,一個配置文件頭像/圖像,我創建它在CDN。但是,如果用戶重新上傳/更改他們的頭像,舊圖像仍然跨CDN緩存,直到TTL過期,或者我發送清除請求(我使用Cloud文件並有無限的清除請求,但即使如此,清除也不是立即執行)。在CDN上更新用戶創建的內容的最佳做法

我該如何允許重新上傳圖像,或者;

  • 緊接變化,
  • 警報的淨化狀態的用戶(「你的新形象可能採取X大量的時間來更新」,我從來沒有見過這個)
  • 創建一個CDN上的新對象,這意味着要在MySQL中存儲對文件名的引用(然後,我會在每次想要在頁面上回顯頭像網址時進行一次SELECT ...)
  • 使用上述內容並利用Memcache爲每個對象的當前網址?
+0

第三個選項看起來不錯。 – 2013-02-24 21:46:38

回答

3

在實踐中,一個非常便宜但常用的選項是在每次更改時生成修訂ID。然後,您將使用該修訂來引用一個全新的文件名(<revision>.extension),或者將該修訂追加到與語義相關的url作爲查詢參數(user/profile.jpg?<revision>)。

+0

明白了。但我想我需要將修訂/版本號存儲在數據庫表中? – Rell 2013-02-24 21:51:33

+1

我所做的是維護一個updated_at列並對其進行散列以生成一個id。但是無論您決定採用哪種技術實現,概念都是一樣的。 – 2013-02-24 21:52:30

相關問題