2010-07-30 5 views
0

J'ai un peu de code comme ça qui fonctionne bien si le fichier en question n'existe pas déjà.AWS S3 avec Rails problèmes avec la mise en cache et le rechargement

if AWS::S3::S3Object.exists? file_name, bucket.name + path_to_images 
    puts "file exists (deleting)" 
    AWS::S3::S3Object.delete file_name, bucket.name + path_to_images, :force => true 
end 

AWS::S3::S3Object.store file_name, 
    File.read(file_path), 
    bucket.name + path_to_images, 
    :content_type => 'image/png', 
    :access => :public_read 

`rm #{file_path}` 

Le problème que je vais avoir est si le fichier existe, je veux le remplacer par une nouvelle copie ... maintenant je ne sais pas si un problème avec son remplaçant, donc j'essayé de supprimer le fichier en premier s'il existe déjà. Cela ne semblait pas fonctionner non plus. Donc je suppose que ce n'est pas en train de le supprimer, ou il est également mis en cache. Lors de l'affichage de l'image, bien sûr, avec? 123232 un nombre aléatoire, j'ai même essayé de supprimer la mémoire cache des navigateurs juste pour les coups de pied.

Je suis sûr qu'il y a quelque chose de facile qui me manque, et probablement une façon plus succincte de le faire quand même.

Merci

MISE À JOUR: Je pense que le problème doit avoir quelque chose à voir avec la mise en cache ou CloudFront s3 régulière, parce que finalement ... il fait la mise à jour. Mais seulement après un jour ou deux? Et ce n'est pas mon navigateur qui le cache, donc c'est probablement ça. Quelqu'un sait comment le dire pour vider le cache?

Répondre

0

Qu'en est-

File.open (file_path)

au lieu de File.read. Cela devrait faire l'affaire :)

Petr

+0

Ça n'a pas l'air de faire quoi que ce soit. ;-( – holden

0

Je ne l'ai jamais connu de problèmes avec la mise en cache de s3 ou quelque chose comme ça. Plus que probablement, je considérerais toujours ceci comme un problème de cache local car la mise en cache pourrait avoir lieu à plusieurs endroits. Pour confirmer, je vous recommande de voir les fichiers dans votre seau d'amazon et de voir ce que vous obtenez après une mise à jour (je pense que amazon a intégré ce site sur le site s3, sinon j'ai eu de la chance avec cloudberry http://cloudberrylab.com/). Vous pouvez également essayer d'y accéder depuis un autre ordinateur après avoir mis à jour le fichier.

Questions connexes