我有一個S3存儲桶上託管的React應用程序。代碼使用yarn build
縮小(這是一個基於創建反應的應用程序)。該build
文件夾看起來像:如何讓CloudFront永不緩存S3存儲桶上的index.html
build
├── asset-manifest.json
├── favicon.ico
├── images
│ ├── map-background.png
│ └── robot-icon.svg
├── index.html
├── js
│ ├── fontawesome.js
│ ├── packs
│ │ ├── brands.js
│ │ ├── light.js
│ │ ├── regular.js
│ │ └── solid.js
│ └── README.md
├── service-worker.js
└── static
├── css
│ ├── main.bf27c1d9.css
│ └── main.bf27c1d9.css.map
└── js
├── main.8d11d7ab.js
└── main.8d11d7ab.js.map
我再也不想index.html
被緩存,因爲如果我更新的代碼(使進制後綴main.*.js
更新),我需要的用戶下次訪問回暖的<script src>
更改爲index.html
指向更新的代碼。
在CloudFront中,我似乎只能排除路徑,排除「/」似乎不能正常工作。我在更改代碼時遇到了奇怪的行爲,如果我刷新了,我會看到它,但如果我退出Chrome並返回,出於某種原因,我看到過時的代碼。
我不想在每個代碼版本(通過CodeBuild)觸發無效。有沒有其他的方法?我認爲其中一個挑戰是,由於這是一個使用React Router的應用程序,我必須通過將錯誤文檔設置爲index.html
並強制HTTP狀態200而不是403來做一些詭計。
你是在談論在S3對象元數據中添加該頭文件嗎?而且,無論URL路徑如何,我都不希望index.html緩存。我更關心緩存相關文件(JS文件,CSS,圖像)。 – ffxsam
是的:它在AWS文檔中被稱爲「系統定義的元數據」:http://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html –
很好,這是有幫助!在複製索引文件時,我已經設置了我的部署過程以使用'aws s3 cp --cache-control max-age = 0'。奇蹟般有效。 – ffxsam