我使用s3來託管靜態網站。這個網站被放置在s3桶中,並由cloudfront分發。這一切運作良好,但當我們需要更改特定文件時,我們正面臨問題。如果我們在s3桶中更改index.html文件,我們沒有從cloudfront獲取最新文件。 我應該在s3上設置這些靜態文件的到期時間,只有在過期時間後,cloudfront纔會查找新版本的文件並分發新文件?S3,雲端和有效日期
2
A
回答
1
CloudFront使用原始服務器發送的Cache-Control
和Expires
標題來決定是否要將資源存儲在緩存中,並將其視爲新鮮資源多長時間。如果您不通過響應頭來控制緩存,那麼CF將在從原始數據獲取24小時後將每個資源視爲過時。或者,您可以配置分發以忽略緩存控制標頭,併爲您指定的每個資源使用到期時間。
當您在原點更新文件時,CF將不會嘗試刷新其副本直到其到期。你可以按照不同的策略讓CF更新緩存副本。 1)效率最低,不推薦使用invalidation。您可以通過AWS控制檯或API執行此操作。
2)通過發送Expires
標題告訴CF何時查找更新的內容。例如,如果您對將新內容/版本部署到您的網站有嚴格的政策,並且您知道說幾乎每個星期四都會部署一個部署,那麼您可以發送一個Expires
標題,其中包含您的來源集中的每個資源到下一個計劃的部署日期。 (這可能不適用於S3原點。)
3)最有效和最推薦的方法是使用versioned URLs。一個好的做法是將資源的最後修改時間包含在其訪問URI中。有了EC2或其他起源能夠提供動態內容的服務,使用S3來源相當容易,如果可能的話,它並不是那麼簡單。
因此,我建議使已更新的資源無效。
1
它看起來像你必須設置在S3側的元數據:
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
我發現這樣做是使用BucketExplorer走「批量操作」最好的辦法,「更新元數據」 ,「添加元數據」,然後添加「緩存控制:最大年齡= 604800,公共」1周緩存期。
相關問題
- 1. s3和雲端主機單頁
- 2. 亞馬遜s3或雲端
- 3. Java有效日期和JOptionPane
- 4. 框架來管理日期(生效日期和失效日期)
- 5. 出生日期,加入日期和離開日期的有效日期
- 6. asp.net有效日期
- 7. 通過雲端點發送的日期和時間
- 8. JavaScript日期有效日期確認
- 9. 從亞馬遜s3到雲端
- 10. 有效日期和會員查詢
- 11. 鉻返回有效日期字符串「風雲2000」,而不是無效的日期
- 12. Solr的日期方面「端」不是一個有效的日期字符串
- 13. MySQL日期有效性
- 14. strtotime有效日期失敗
- 15. 雲端日誌的時間
- 16. 無效日期返回無效日期
- 17. 從s3遷移到Google雲端存儲和ACL
- 18. 利用瀏覽器緩存aws s3和雲前端
- 19. iphone - 檢查APNS證書的有效期和到期日期
- 20. Linux日期:無效日期
- 21. 處理無效日期爲有效?
- 22. 亞馬遜S3到期日?
- 23. 地址類型的生效日期和到期日期
- 24. gce容器日誌沒有顯示在雲端日誌記錄
- 25. 根據變更和生效日期編制具有開始日期和結束日期的表格
- 26. 錯誤:Talend S3 - AWS認證需要有效的Date或x-amz日期標題
- 27. JQuery DatePicker約束只有有效日期?
- 28. 在特定日期/時間安排雲端功能
- 29. 如何在Google雲端硬盤SDK上設置創建日期
- 30. Amazon S3:緩存控制和有效期差異和設置槽REST API
你好,我們可以設置緩存控制爲無緩存的HTML文件,並將雲端總是採取最新的HTML文件? – Yalamber 2013-02-21 13:20:30
首先,我不確定如何控制由S3發送的響應中的標題。這並不意味着這是不可能的,我從來沒有用過S3。但更重要的是,如果你的S3 orgin總是發送一個'Cache-Control:no-cache'頭文件,它基本上告訴CF_not_來存儲給定的資源,因此每次從CF請求時,它都會將請求轉發到原始地址獲取它,所以你根本不會從中受益。 – marekful 2013-02-21 13:25:24
我打算在s3和cf上託管一個博客網站,但是像主頁和某些類別頁面這樣的一些文件需要經常更新,其他頁面(例如博客單頁)不會經常更改,因此我可以將其設置爲緩存,但某些html像主頁和類別頁面的文件我不希望被緩存但每次都得到文件。 – Yalamber 2013-02-21 13:39:17