2014-09-03 103 views
17

到期我與它大約300K項目由大型網站使用Amazon S3的桶中。我想設置從S3存儲桶中提供的所有CloudFront對象的到期日期,以便它們可以由用戶的計算機在瀏覽器中緩存。有沒有一種簡單的方法目前在桶並設置上的所有S3對象的緩存控制最重要的設置桶,使得任何新的項目加入也收穫了默認的過期和緩存控制頭OR可以這樣使用CloudFront完成?設置默認緩存控制和整個S3桶/ CloudFront的

到目前爲止,我已經讀了一些AWS文件,但沒有發現任何:

回答

11

步驟爲你的水桶增加高速緩存控制現有對象

  1. git clone https://github.com/s3tools/s3cmd
  2. 運行s3cmd --configure (系統會要求您輸入兩個密鑰 - 從 確認電子郵件或您的Amazon帳戶頁面複製並粘貼它們。 複製它們時要小心!他們是大小寫敏感的,必須準確輸入 不然你會不斷收到有關無效簽名或類似的錯誤。 請記住將s3:ListAllMyBuckets權限添加到密鑰中,否則在測試訪問時您將收到AccessDenied錯誤。)
  3. ./s3cmd --recursive modify --add-header =「Cache-Control:public,max-age = 31536000" S3:// your_bucket_name/

對於CloudFront的您可以指定最小TTL,最大TTL和默認TTL的緩存behavior.they基本上都是針對該對象可以在CloudFront的緩存時間, 有沒有關係,即它不麼任何頭

添加過期頭爲對象

所以現在如果你還沒有添加任何頭文件,那麼cloudfront會將其緩存爲DEFAULT TTL。 查詢詳情READFOLLOWING表 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

+1

的CloudFront的設置「最小TTL」,「最大TTL」和「默認TTL」指定CloudFront的緩存中,而不是在HTTP響應設置什麼標題的行爲,是否正確? – Flimm 2016-11-23 14:23:49

+1

這似乎沒有解決問題的最後部分。如何設置存儲桶以便在該文件夾中添加新事物,或者甚至可以在整個存儲桶中添加該標記 – boatcoder 2016-12-13 18:26:30

+1

CloudFront TTL表示對象處於邊緣節點緩存多久並且對客戶端緩存無所作爲 – mac 2017-01-29 12:20:59