7
votes

Invalidation de cache CDN (CloudFront) à l'aide de la véranda

J'utilise CarrierWave pour permettre aux utilisateurs de télécharger des images avec une capacité de recadrer après le téléchargement, le problème est que les versions sont créées et les CDN les attrape instantanément que lorsque les utilisateurs se connectent, ils ne voient pas les modifications car le cache de Cloudfront doit être invalidé et prend un temps assez décent pour se rafraîchir seul.

Je pensais que mettre des numéros de version sur les noms de fichiers peut être un bon moyen d'invalider le cache, comment réaliser cela à l'aide de CarrierWave?

et est-ce que la meilleure approche?


4 commentaires

Comment se passe la culture? À travers Rmagick via CarrierWave?


Le culture fonctionne sans problème, il utilise Minimagick et je peux voir les images recadrées sur le serveur (pas via le CDN).


Ce que je demande, c'est que vous faites la culture indépendante du processus de téléchargement de la CarrierWave?


Non, c'est après le téléchargement et les cultures par défaut sont générées.


3 Réponses :


5
votes

Vous pouvez trouver des détails sur la façon de le faire chez Carrierwave Wiki:

https://github.com/jnicklas/carrierwave/wiki/how-to%3a-create-random-and-unique-filenames-for-allingioned-files


0 commentaires

15
votes

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

ici ma solution hackish: mettez l'horodatage mis à jour_at dans un param. Devrait fonctionner avec tous les CDN P>

class AssetUploader < CarrierWave::Uploader::Base

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

end


3 commentaires

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


Ça marche! Mais je ne comprends pas. Quel est ce paramètre "V" utilisé? Qu'est-ce qui se passe dans les coulisses? Merci!


Il travaillait parfaitement! Le problème est maintenant que j'ai commencé à utiliser le document d'information de CarrierWave et cela ne fonctionnera plus. Des idées?



8
votes

Pour que l'URL Trick fonctionne sur Amazon Cloudfront CDN, rappelez-vous simplement d'activer la chaîne de requête dans votre distribution. Allez dans l'onglet Comportement et activez "Strings de requête en avant".


1 commentaires

passé quelques heures à déterminer ce qui ne va pas jusqu'à ce que je lisais votre réponse. Merci beaucoup!