2017-06-14 100 views
0

我使用的是GlideFirebase用於加載和兌現圖片。通常,我使用Signature和圖像創建時間,然後確定緩存時間。但在Firebase我可以創建時間只使用第二個請求getMetadata()。當我在存儲中將一個圖像更改爲另一個具有相同名稱的圖像時,如何正確進行緩存?我應該使用getMetadata()還是有其他方法?Firebase +滑翔,緩存策略

Glide.with(getContext()) 
        .using(new FirebaseImageLoader()) 
        .load(storageReference.child(item.getImageUrl())) 
        .placeholder(R.drawable.category_image_not_found) 
        .signature(???) 
        .into(image); 

回答

0

只要我記得,我被困在類似的情況!使用getMetadata()很慢,並導致延遲。我的想法是爲了保持我的形象是最新的,沒有別的選擇,只能加入實時數據庫。這可以通過下列方式之一進行: -

第一:

只要在特定的存儲位置的圖像進行編輯時,您對您的實時數據庫中的圖像的節點更新timestamp。而當你想要顯示圖像時,只需下載它的時間戳,然後寫出類似於你所提到的方法即Glide.signature(timestamp)

二:

只是獲得,只要你上傳/編輯它,並保存URL在實時數據庫中的圖像的下載網址。通過這種方式,每當圖像被更新時,不同的URL被保存到相同的位置。這可以保證您的緩存不會顯示過時的圖像(更改源的URL是支持Glide的緩存失效的主要方法)。

我知道可能會有開銷涉及從第一個實時數據庫檢索數據,然後下載圖像。不過,這是使用Glide + Firebase時唯一的途徑。此外,啓用持久性和其他實時數據庫怪癖可以使其無縫快速!