2011-07-13 76 views
5

我在Amazon S3上有一个存储桶,其中有时会更改文件,但我想对它们使用最大缓存,所以我想使用URL指纹来使缓存失效。在Amazon S3上的URL指纹缓存

我使用指纹文件的“上次修改日期”,并且请求S3文件的html页面总是知道每个文件的指纹。现在

,我意识到,我可以使用指纹查询字符串,像这样:

http://aws.amazon.com/bucket/myFile.jpg?v=1310476099061 

但查询字符串不是总能获得一些代理或旧版浏览器缓存失效,有的如果代理和浏览器包含查询字符串,它甚至不会缓存它。这就是为什么我要保留指纹在实际的URL,如这一个:

http://aws.amazon.com/bucket/myFile-1310476099061.jpg 
http://aws.amazon.com/bucket/1310476099061/myFile.jpg 
http://aws.amazon.com/bucket/myFile.jpg/1310476099061 
etc 

任何这些网址都将是完美的请求myFile.jpg,但我想这一切被重新映射到http://aws.amazon.com/bucket/myFile.jpg文件。也就是说,我只希望改变网址,这样浏览器就会认为它是一个新文件,并得到一个新的文件,它将缓存一年。当我上传该文件的新版本时,指纹会自动更新。

现在,这里是我的问题:有什么方法可以重写url,以便像http://aws.amazon.com/bucket/myFile-xxxxxx.jpg这样的URL请求将在Amazon S3上提供http://aws.amazon.com/bucket/myFile.jpg文件?还是还有其他的解决方法,仍然会保持文件缓存?谢谢=)

回答

2

恐怕你卡在查询字符串中的版本。在没有实际更改文件名的情况下,无法在S3上重写网址。

+0

这太糟糕了。虽然,我想我只是上传带有文件名中指纹的文件,然后通过脚本删除旧文件,这应该具有相同的效果。谢谢。 – Flassari