我在 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,以便对类似 URL 的请求http://aws.amazon.com/bucket/myFile-xxxxxx.jpg
将http://aws.amazon.com/bucket/myFile.jpg
在 Amazon S3 上提供文件?还是有任何其他解决方法仍然可以保持文件缓存?谢谢 =)