2
我有一個Django應用程序,它在s3中存儲靜態文件並使用Cloudfront作爲CDN來爲它們提供服務。我最近更新了一個js文件,並將其部署到爲CDN提供內容的s3存儲桶。我證實了s3中的內容是正確的,並且上傳時間都是有意義的。儘管如此,Cloudfront仍會繼續使用舊版本的文件(10小時後)。我如何處理這個問題?Cloudfront似乎服務的內容比S3中的內容要多
我有一個Django應用程序,它在s3中存儲靜態文件並使用Cloudfront作爲CDN來爲它們提供服務。我最近更新了一個js文件,並將其部署到爲CDN提供內容的s3存儲桶。我證實了s3中的內容是正確的,並且上傳時間都是有意義的。儘管如此,Cloudfront仍會繼續使用舊版本的文件(10小時後)。我如何處理這個問題?Cloudfront似乎服務的內容比S3中的內容要多
這是因爲正在緩存由CloudFront提供的文件。
解決此問題的一個簡單方法是將最後修改日期的時間戳附加到該文件的url,這將導致CloudFront重新緩存文件,或者可以將版本號放入文件的名稱中本身。我採取版本號的方法。
如果您不更改文件或URL的名稱,您將獲得緩存版本,直到符合expires標題日期。
你可以擴展更多關於Django的版本控制嗎?我能否以某種方式將版本添加到我的STATIC_URL中? – Eli
這沒什麼複雜的。我只是在文件名中使用版本號,例如:'home-2.1.css',然後將其更改爲'home-2.2.css',這會導致CloudFront爲該文件創建新的緩存項。 – Brandon
此外,如果您使用的是django-compressor,任何時候被壓縮文件的修改日期時間都會發生變化,django-compressor創建的文件名散列值將會改變,從而使緩存失效。 – Brandon