2017-06-14 1 views
0

J'utilise Glide et Firebase pour charger et encaisser des images. Habituellement, j'utilise Signature avec le temps créé par l'image, puis détermine l'heure du cache. Mais dans Firebase Je peux obtenir l'heure créée seulement en utilisant la deuxième demande getMetadata(). Comment est-ce que je fais la mise en cache correctement quand je change une image à l'autre avec le même nom dans mon stockage? Dois-je utiliser getMetadata() ou il y a d'autres façons?Firebase + glide, stratégie de mise en cache

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

Répondre

0

J'ai été coincé dans une situation similaire aussi longtemps que je me souvienne! L'utilisation de getMetadata() est lente et entraîne des retards. Ce que je pensais, c'était que pour garder mon image à jour, il n'y avait pas d'autre choix que d'incorporer la base de données en temps réel. Cela peut se faire dans l'une des façons suivantes: -

Première:

Chaque fois que l'image à l'emplacement de stockage particulier est édité, vous mettez à jour le timestamp pour le nœud de cette image dans votre base de données en temps réel. Et quand vous voulez afficher l'image, il suffit de télécharger son horodatage et d'écrire une méthode Glide.signature(timestamp) similaire à celle que vous avez mentionnée.

Deuxième:

Il suffit d'obtenir l'URL de téléchargement de l'image à chaque fois que vous téléchargez/modifier et enregistrer l'URL dans la base de données en temps réel. De cette façon, chaque fois que l'image est mise à jour, une URL différente est enregistrée au même emplacement. Cela garantit que votre cache n'affiche pas les images obsolètes (la modification de l'URL de la source est la méthode préconisée pour invalider les caches pour Glide).

Je comprends qu'il pourrait y avoir des frais généraux impliqués dans la récupération des données de la base de données en temps réel d'abord, puis le téléchargement de l'image. Cependant, c'est le seul moyen d'utiliser Glide + Firebase. De plus, en activant la persistance et d'autres problèmes de base de données en temps réel, vous pouvez accélérer le processus de façon transparente!