Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AmazonS3上的URL指纹缓存_Url_Caching_Mod Rewrite_Amazon S3_Fingerprint - Fatal编程技术网

AmazonS3上的URL指纹缓存

AmazonS3上的URL指纹缓存,url,caching,mod-rewrite,amazon-s3,fingerprint,Url,Caching,Mod Rewrite,Amazon S3,Fingerprint,我在AmazonS3上有一个bucket,我保存了一些有时会更改的文件,但我想对它们使用最大的缓存,所以我想使用URL指纹来使缓存无效 我使用文件的“上次修改”日期作为指纹,请求S3文件的html页面总是知道每个文件的指纹 现在,我意识到我可以在查询字符串中使用指纹,如下所示: http://aws.amazon.com/bucket/myFile.jpg?v=1310476099061 但是查询字符串并不总是足以让某些代理或旧浏览器使缓存无效,而且如果它包含查询字符串,某些代理和浏览器甚至不

我在AmazonS3上有一个bucket,我保存了一些有时会更改的文件,但我想对它们使用最大的缓存,所以我想使用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,但我希望所有这些URL都重新映射到
http://aws.amazon.com/bucket/myFile.jpg
文件。也就是说,我只想更改URL,以便浏览器认为这是一个新文件,并获得一个新文件,它将缓存一年。当我上传该文件的新版本时,指纹会自动更新


现在我的问题是:有没有办法重写url,以便请求类似
http://aws.amazon.com/bucket/myFile-xxxxxx.jpg
将提供
http://aws.amazon.com/bucket/myFile.jpg
亚马逊S3上的文件?或者,是否有其他解决方法仍然可以缓存文件?谢谢=)

恐怕您在查询字符串中的版本被卡住了。如果不实际更改文件名,就无法重写S3上的URL。

那太糟糕了。尽管如此,我想我会上传文件名中带有指纹的文件,然后通过脚本删除旧文件,这应该会有同样的效果。谢谢