我有一個使用AWS Elastic Beanstalk部署的Flask應用程序。我使用S3作爲存儲,使用CloudFront作爲cdn。如何將Cache-Control標頭添加到由Elastic Beanstalk應用程序提供的靜態文件中?AWS Elastic Beanstalk/S3/CloudFront緩存控制標頭
回答
對於靜態文件,Elastic Beanstack假定一個非常簡單的設置。基本上假設你會從服務器本身提供服務。
大多數人和你一樣,使用S3和CloudFront,但不幸的是,這需要你手動部署這些靜態文件(即沒有0)。
如果您的靜態文件變化不大,您可以將它們手動上傳到您的s3原點。但可能更好的腳本。
我個人使用Gulp來管理我所有的靜態文件。咕嘟咕嘟有兩個方便包部署到S3,並設置緩存控制:
這不是很難做同樣的寶途,但咕嘟咕嘟也處理我的CSS/JS文件,包括創建緩存友好的部署名稱(例如app-1234.css)。我部署到Elastic Beanstalk然後:
gulp deploy # Where Gulp processes CSS/JS/Images and uploads to S3/CF
eb deploy # To deploy my python code
希望這會有所幫助。
我有這個工作,但由於rev-all(使緩存友好名稱模塊),我不知道什麼靜態文件將被調用。我想我將不得不更新我的python代碼/模板來通過它們緩存的惡意名稱來請求靜態文件,而不知道如何找到從實際名稱到緩存友好的名稱的映射。你能爲我指出正確的方向嗎? – mikeecb
我注意到這個映射是用rev-all和'.pipe(revAll.manifestFile())'產生的。 – mikeecb
我不知道你使用Flask的模板,或者如果你不使用模板。使用Django,我所做的就是將我的基本模板作爲index.html保存在我的gulp項目中。但是對於那個HTML文件,我沒有部署到S3,而是複製到我的Django項目中。該基本模板基本上沒有什麼,只是對剛剛創建的靜態文件的引用。 – dkarchmer
- 1. AWS Elastic Beanstalk緩存?
- 2. 緩存控制頭
- 3. 如何在AWS S3管理控制檯上設置緩存控制標頭
- 4. 設置ASP.NET緩存控制標頭
- 5. Cloudfront緩存控制標頭丟失
- 6. 緩存控制http頭
- 7. 在AWS Elastic Beanstalk中配置nginx緩存
- 8. 使Nginx緩存尊重緩存控制標頭
- 9. 將緩存控制元數據添加到AWS Elastic代碼轉換器輸出
- 10. 緩存控制響應頭不強制瀏覽器緩存
- 11. expire標題和緩存控制與mod標頭
- 12. 緩存控制HTML標題
- 13. AlamoFire忽略緩存控制頭
- 14. CloudFront的圖像緩存控制頭
- 15. Symfony響應緩存控制頭重複
- 16. ASP.NET MVC:OutputCache和http頭 - 緩存控制
- 17. 如何使用控制緩存頭?
- 18. Orbeon緩存標頭
- 19. webapp2如何刪除緩存控制:從響應頭無緩存?
- 20. HTTP緩存:緩存控制
- 21. 如何將緩存控制過期標頭添加到圖像?
- 22. OpenStack Swift:添加緩存控制和過期標頭
- 23. 在WCF服務中設置HTTP緩存控制標頭
- 24. mod_expires沒有在JPEG圖像上設置緩存控制標頭
- 25. 設置高速緩存控制標頭不適用於S3
- 26. Rails資產在Heroku上沒有Puma緩存控制標頭
- 27. HTTP中緩存控制標頭的最大值
- 28. 如何讓feedparser發送緩存控制標頭?
- 29. ImageResizer返回專用緩存控制標頭值
- 30. 高速緩存控制和過期標頭PHP
如果您使用的是cloudfront,那麼「從瓶子提供靜態文件」是什麼意思?難道你不想要cdn提供的所有靜態文件嗎? – dkarchmer
當我部署Elastic Beanstalk應用程序時,它會將應用程序的壓縮文件上傳到S3。我使用這個作爲我的CDN的來源之一(另一個來源是應用程序圖像的桶)。我認爲靜態文件夾中的靜態文件正在通過CDN,但是第二個想法是,它不是。有沒有辦法將靜態文件上傳到eb部署中的S3上,還是需要編寫一個腳本來執行此操作? – mikeecb