2013-02-23 57 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/(对象版本控制和缓存失效主题)