簡體   English   中英

來自Firebase的緩存圖片

[英]Cache Image from Firebase

我有多個單元格,目前從Firebase中保存不同的照片。 每次用戶加載這些圖像然后滾動時,它們都會被重新下載,這會快速吞噬數據。 我發現這涉及任何擁有計量數據計划的用戶。 我該怎么做才能解決這個問題? Firebase是否提供緩存下載圖像的任何選項?

這就是我目前將圖像調用到單元格中的方式:

if let imageName = post["image"] as? String {
        let imageRef = FIRStorage.storage().reference().child("images/\(imageName)")
        imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in if error == nil {
            let image = UIImage(data: data!)
            cell.postImageView.image = image

使用Kingfisher緩存圖像。 它輕便且易於使用。 只需從firebase傳遞你的網址,它就會自動緩存它。

let url = URL(string: "url_of_your_image")
imageView.kf.setImage(with: url)

Firebase在從服務器獲取實時數據之前已經在本地緩存數據庫,因此問題並不嚴重。 但是如果你想做更好的緩存,可以使用Glide ,Glide緩存圖像,你可以指定時間簽名,這樣只有在更新圖像時它才會重新獲取圖像。

這非常簡單,但您確實需要在Google雲服務或aws或其他任何地方托管您的圖片

 ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
 Glide.with(this).load("url").into(imageView);

你也可以使用Alamofire 它不會自動處理緩存,但是對於Kingfisher,它能夠處理幾乎所有類型的網絡需求。

PS:是的我知道 - 通常 - 如果我使用Firebase,我不需要任何網絡功能。

但是,例如; 由於Firebase數據庫和Firestore無法處理全文搜索,因此您需要使用第三方解決方案,因此,您可能需要使用全功能網絡實用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM