Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

URL fingerprint caching on Amazon S3

I have a bucket on Amazon S3 where I keep files that sometimes change but I want to use maximum caching on them, so I want to use URL fingerprinting to invalidate the cache.

I use the "last modified" date of the files for the fingerprint, and the html page requesting the S3 files always knows each file's fingerprint.

Now, I realize that I could use the fingerprint in the query string, like so:

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

but the query string is not always enough for some proxies or older browsers to invalidate the cache, and some proxies and browsers don't even cache it if it contains a query string. That's why I want to keep the fingerprint in the actual URL, like one of these:

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

Any of these URLs would be perfect for requesting the myFile.jpg, but I want it all to be remapped to the http://aws.amazon.com/bucket/myFile.jpg file. That is, I only want the URL to change so the browser will think that it is a new file and get a fresh file which it will cache for a year. When I upload a new version of that file, the fingerprint is automatically updated.

Now here is my question: Is there any way to rewrite the url so that a request for a URL likehttp://aws.amazon.com/bucket/myFile-xxxxxx.jpg will serve the http://aws.amazon.com/bucket/myFile.jpg file on Amazon S3? Or are there any other workarounds that will still keep the file cached? Thanks =)

like image 270
Flassari Avatar asked Jul 13 '11 11:07

Flassari


1 Answers

I'm afraid you're stuck with the version in the querystring. There is no way to rewrite the urls on S3 without actually changing the filename.

like image 151
Geoff Appleford Avatar answered Oct 19 '22 13:10

Geoff Appleford