2017-02-24 5 views
1

Ich habe mehrere Zellen, die derzeit verschiedene Fotos von Firebase enthalten. Jedes Mal, wenn ein Benutzer diese Bilder lädt und scrollt, werden sie erneut heruntergeladen, was Daten schnell auffrischt. Ich finde das in Bezug auf jeden Benutzer, der einen gemessenen Datenplan hat. Was könnte ich tun, um das zu lösen? Bietet Firebase Optionen zum Zwischenspeichern von heruntergeladenen Bildern?Cache Image von Firebase

Dies ist, wie ich zur Zeit ein Bild in eine Zelle anzurufenden:

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 

Antwort

2

Verwenden Kingfisher Bilder zwischenzuspeichern. Es ist leicht und sehr einfach zu bedienen. Übergeben Sie einfach Ihre URL von Firebase und es wird automatisch zwischengespeichert.

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

Firebase hat bereits die Datenbank lokal zwischenzuspeichern, bevor sie vom Server Echtzeit-Daten holen, so dass das Problem ist nicht so schlimm . Wenn Sie jedoch eine bessere Zwischenspeicherung vornehmen möchten, verwenden Sie Glide, Glide speichert Bilder zwischen, und Sie können Taktarten angeben, sodass Bilder nur dann erneut abgerufen werden, wenn sie aktualisiert werden.

Das ist super einfach, aber Sie müssen Ihre Bilder in Google Cloud-Services hosten oder aws oder irgendwo sogar

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

Edit: Glide ist nur für Android – gabe

+0

oops, bemerkte nicht, dass Sie auf ios sind – IsuruKusumal

+0

hahahahahahahah – VVL

Verwandte Themen