2012-11-03 2 views
7

J'utilise carrierwave pour permettre aux utilisateurs de télécharger des images avec une capacité à recadrer après le téléchargement, le problème est que les versions sont créées et CDN les attrape instantanément que lorsque les utilisateurs recadrent ils ne le font pas voir les modifications car le cache Cloudfront doit être invalidé et prend assez de temps pour se rafraîchir tout seul.CDN (Cloudfront) Invalidation du cache avec Carrierwave

Je pensais que mettre des numéros de version sur les noms de fichiers pourrait être un bon moyen de trier une cache invalide, comment y parvenir en utilisant Carrierwave?

Et est-ce la meilleure approche?

+0

Comment le recadrage est-il effectué? Avec Rmagick via CarrierWave? – deefour

+0

Le recadrage fonctionne sans problèmes, il utilise MiniMagick et je peux voir les images recadrées sur le serveur (pas via le CDN) – Ryan

+0

Ce que je demande, est-ce que vous faites le recadrage indépendant du processus de téléchargement CarrierWave? – deefour

Répondre

14

J'ai eu le même problème avec cloudflare

ici ma solution hackish: mettre l'horodatage updated_at dans un params. Devrait fonctionner avec tous les CDN

class AssetUploader < CarrierWave::Uploader::Base 

    def url(options={}) 
    super.split("?v=")[0]+"?v=#{model.updated_at.to_time.to_i}" rescue super 
    end 

end 
+1

"hackish", mais n'est-ce pas un moyen propre de le faire? –

+0

Ça marche! Mais je ne comprends pas. A quoi sert ce paramètre "v"? Qu'est-ce qui se passe dans les coulisses? Merci! –

+0

Cela fonctionnait parfaitement! Le problème est maintenant que j'ai commencé à utiliser carrierwave-backgrounder et cela ne fonctionnera plus. Des idées? –

7

Pour que le trick url sur Amazon CloudFront CDN, rappelez-vous juste pour permettre à la chaîne de requête dans votre distribution. Accédez à l'onglet "comportement" et activez "Transférer les chaînes de requête".

+0

passé quelques heures à comprendre ce qui ne va pas jusqu'à ce que je lis votre réponse. Merci beaucoup! – Sbbs

Questions connexes