6

我在 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.jpghttp://aws.amazon.com/bucket/myFile.jpg在 Amazon S3 上提供文件?还是有任何其他解决方法仍然可以保持文件缓存?谢谢 =)

4

1 回答 1

2

恐怕您会被查询字符串中的版本所困扰。如果不实际更改文件名,就无法在 S3 上重写 url。

于 2011-07-13T12:43:38.680 回答