【发布时间】:2011-07-13 20:43:38
【问题描述】:
我在 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
这些 URL 中的任何一个都非常适合请求 myFile.jpg,但我希望将其全部重新映射到 http://aws.amazon.com/bucket/myFile.jpg 文件。也就是说,我只希望 URL 改变,这样浏览器就会认为它是一个新文件并获得一个新文件,它将缓存一年。当我上传该文件的新版本时,指纹会自动更新。
现在我的问题是:有什么方法可以重写 url,以便像http://aws.amazon.com/bucket/myFile-xxxxxx.jpg 这样的 URL 请求将在 Amazon S3 上为http://aws.amazon.com/bucket/myFile.jpg 文件提供服务?还是有任何其他解决方法仍然可以保持文件缓存?谢谢=)
【问题讨论】:
标签: url caching mod-rewrite amazon-s3 fingerprint