AWS S3预定请求缓存
我想将用户个人资料图片存储在S3存储桶中,但保留这些图像的私密性。 为了做到这一点,我会在需要图像时创建预先注册的url。 但是,这会每次都会创建一个唯一的url,这意味着该图像将永远不会被浏览器缓存,并且最终我会在GET请求中付出更多。
下面是我的代码生成网址的例子,我使用Laravel:
$s3 = Storage::disk('s3');
$client = $s3->getDriver()->getAdapter()->getClient();
$expiry = new DateTime('2017-07-25');
$command = $client->getCommand('GetObject', [
'Bucket' => Config::get('filesystems.disks.s3.bucket'),
'Key' => $key
]);
$request = $client->createPresignedRequest($command, $expiry);
return (string) $request->getUri();
我认为通过指定一个日期时间,而不是一个时间单位,它会创建相同的url,但它实际上会将剩余秒数添加到url中,下面是一个示例:
xxxx.s3.eu-west-2.amazonaws.com/profile-pics/92323.png?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AXXXXXXXXXXX% 2Feu西-2%2Fs3%2Faws4_request&X-AMZ-日期= 20170720T112123Z&X-AMZ-SignedHeaders =宿主&X-AMZ-过期= 391117&X-AMZ-签名= XXXXXXXXX
是否有可能生成可重复的预定请求url,以便用户浏览器可以缓存图像?
您可以使用预先设定的URL机制,而不是使用预先设定的URL机制,而是将已验证的端点添加到您的应用程序中,并在所述端点中检索图像 在你的img
标签中使用这个URL等等。 此端点可以缓存图像并为浏览器提供适当的响应标头以缓存图像。
上一篇: AWS S3 Presigned Request Cache
下一篇: Method call to get pre signed urls giving inconsistent results (S3)