我有以下代碼作爲後端示例的一部分,用於生成有效期爲15分鐘的下載鏈接。獲得預先簽署的Amazon S3下載URL的最佳實踐
$url = "{$bucket}/{$key}";
$request = $this->s3Client->get($url);
return $this->s3Client->createPresignedUrl($request, '+15 minutes');
從我所瞭解的情況來看,這使得對亞馬遜的網絡請求,我需要生成每頁pageload約20-30下載鏈接。
那麼我怎麼會不濫用亞馬遜API,同時仍然允許客戶端下載文件? 2.選擇我能想到的是:
- 生成的鏈接客戶端(無論是在點擊或頁面加載),並將它們存儲內使用cookies,以便在刷新時,沒有額外的API調用製成。
- 生成鏈接服務器端並將它們存儲在cookie或會話中。
什麼我感興趣的是:
- 什麼是生成的鏈接(客戶機與服務器端)的最佳實踐?
- 我應該如何緩存鏈接(即在哪裏)?
我能想到的最佳解決方案是生成鏈接客戶端,攔截「onclick」事件。事實上,您無法知道客戶從您的服務器獲取頁面以及點擊您網頁上的鏈接需要多少時間,並且此解決方案可避免客戶點擊鏈接已過期的情況 – morepaolo