0

在s3上託管網站之後,我們如何才能在其網頁中對文本進行更改。我從存儲桶中刪除了較舊的html文件,並通過代碼中的更新文本以相同的名稱上傳了新文件。但刷新這些網頁後沒有反映出任何變化。如何更新aws s3上託管的網站的網頁?

是否有其他方法可以更新已經在s3上託管的網站的網頁?如果有的話,請在這裏發佈步驟進行更新? TIA。

回答

6

我注意到您的代碼中存在CloudFront,因此很可能是問題所在。當您將文件上傳到S3時,如果CloudFront是現有文件,它將不會立即知道它。相反,它將默認設置爲24小時,以檢查源(在本例中爲S3存儲桶)是否進行了任何更改以及是否需要更新緩存。有幾種方法可以更新這些文件的緩存:

  • 使用名稱中包含版本的文件並更新鏈接。缺點是你必須做出比平常更多的改變才能實現這一目標。
  • Invalidating the cache。這不是亞馬遜推薦的,但它是一種使緩存立即吸收新​​變化的快速方法。需要注意的是可以有charges if you do a lot of invalidations

不另收費每月請求無效第1000條路徑。此後,$ 0.005每路徑請求無效

Setting CloudFront behaviors

在這裏你可以指定一個路徑(個人文件,文件夾等),調整某些屬性。其中之一是所討論路徑的TTL(生存時間)。如果您將TTL設置爲較小的值,則CloudFront將更快地獲取更改。但是,由於您有S3來源注意,您必須處理請求分配。另外,CloudFront需要一些時間將這些更改分發到所有邊緣服務器。

希望這會有所幫助。

+0

*「此外,CloudFront需要一些時間將這些更改分發到所有邊緣服務器。」*此聲明涉及哪些「更改」?緩存行爲設置的更改?還是改變對象?還要注意的是,通過使用無效路徑'*'或'/ *'爲分配中的所有內容創建一個無效請求僅對每月1000個空閒分配計爲1無效。以這種方式完成後,被驅逐物體的數量並不是成本的一​​個因素。 CloudFront最初啓動後添加了此功能。 –

+0

@ Michael-sqlbot我指的是無效。如果我無效,我會返回一個ID並將其更改爲正在進行狀態。我非常感謝你對失效分配的澄清。這只是指出,雖然成本很低,但有可能被收取費用。我傾向於自己做失效,因爲我很難改變現有的文件。 –

+0

偶爾有一種誤解,認爲已更改的對象被「推送」到CloudFront,導致[複製延遲](https://stackoverflow.com/a/35541525/1695906),這當然不會發生。我不認爲你是這麼說的,但想要驗證。感謝澄清。 –

0

您不需要刪除舊文件即可在S3中更新新文件。使用版本控制來避免意外更新對象。

S3基本上有以下一致的模型。 1.讀取新對象的寫入一致性後讀取。 2.覆蓋現有對象和刪除對象的最終一致性。

相關問題