2013-02-23 48 views
5

我在使用django壓縮器與CloudFront一起工作時遇到了一些麻煩。我正在運行offline compress命令來生成我的壓縮文件和manifest.json文件。在此之後,我運行collectstatic將壓縮文件上傳到我的S3存儲桶。Django Compressor - CloudFront和manifest.json

這些靜態文件,然後從CloudFront的服務,所以我的設置是這個樣子:

STATIC_ROOT = '' 
STATIC_URL = 'http://<my-cloudfront-domain>/somebucket/' 

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

COMPRESS_OFFLINE = True 

的問題是,CloudFront的是服務的manifest.json的舊版本,意壓縮機拋出OfflineGenerationError。

即使存在緩存後端,我也擔心如果緩存服務器因任何原因而無法離線/刷新,我的清單文件將不正確。

我在這裏錯過了什麼,以確保我不會遇到OfflineGenerationError?

+0

你找到一個解決方案。這裏同樣的問題。 – 2013-03-23 10:26:57

+0

我也有這個問題,但我不明白爲什麼壓縮將通過靜態URL訪問'manifest.json'而不是使用默認文件存儲;如果是後者,S3將被直接訪問,並且不會有緩存問題......假設客戶端沒有使用manifest.json。我還沒有看到我的客戶端嘗試訪問它。 – Bryan 2015-02-16 23:11:25

回答

0

順便說一下,Amazon CloudFront的工作原理是,需要通過提供相同文件的「版本」來顯式地使文件失效,或者放棄並使用新名稱。早期刪除看起來代價高昂並且收費。

嘗試從AWS Console上傳manifest.json併爲同一文件設置新版本。它將更新CloudFront端點而不刪除文件。

來源:http://aws.amazon.com/en/cloudfront/(對象版本控制和緩存失效主題)