Évitez la mise en cache après l'image mise à jour pour Paperclip
-
13-09-2019 - |
Question
Je télécharger des images à l'aide de stockage S3 gem paperclip. Il télécharge avec succès.
Dans ma demande, un utilisateur peut changer sa photo de profil. Si l'utilisateur ne le changement de photo de profil, la nouvelle image se téléchargé avec succès. Le problème est le navigateur affichera la photo précédente seulement après le téléchargement. Seulement après une actualisation de la force par la frappe ctrl + F5 le nouvel affichage d'image.
Note: l'image est téléchargée à l'aide post formulaire. Je suppose que c'est lié avec la mise en cache, mais je n'ai pas la moindre idée où je peux changer mon code. S'il vous plaît aidez-moi cela. Merci.
La solution
Quelle propriété de votre objet image utilisez-vous comme src
de votre image? Si vous utilisez user.image.url
(en supposant que vous avez un modèle de User
et que le image
appelé de champ Paperclip), puis l'URL de l'image sur S3 devrait avoir un certain nombre dans la chaîne de requête qui agit pour empêcher toute mise en cache de sorte que vous voyez l'image mise à jour immédiatement. Par exemple, l'URL de l'image doit passer de
http://s3.amazonaws.com/bucket/images/5/original/pic.gif?1250184309
à
http://s3.amazonaws.com/bucket/images/5/original/pic.gif?1250184348
qui devrait arrêter le navigateur en cache l'image.