我想將用戶個人資料圖片存儲在S3存儲桶中,但保留這些圖像的私密性。爲了做到這一點,我會在需要圖像時創建預先註冊的url。但是,這會每次都會創建一個唯一的url,這意味着該圖像將永遠不會被瀏覽器緩存,並且最終我會在GET請求中付出更多。AWS S3預定請求緩存
這裏,我使用Laravel我的代碼來生成URL的例子:
$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-west-2% 2Fs3%2Faws4_request & X-AMZ-日期= 20170720T112123Z & X-AMZ-SignedHeaders =宿主& X-AMZ-過期= 391117 & X-AMZ-簽名= XXXXXXXXX
是否有可能產生一個可重複的presigned請求網址,以便用戶瀏覽器可以緩存圖像?
謝謝,這是我的第一個想法,但後來我失去了完全繞過我的服務器資產的好處。 – ezero