我一直使用s3boto的S3BotoStorage作为我的静态文件后端,并使用./manage.py collectstatic将文件同步到我的aws s3存储桶(暂存和生产)。它工作正常。但是它很慢。除了我自己的静态文件(只有几个)和django admin之外,我还有一些包含许多静态文件的第三方软件包(grappelli,django-redactor)。每次运行时,collectstatic都可以使用 15分钟,具体取决于我的互联网连接。对于我正在与我的临时存储桶同步并且事情不太正确的情况,我必须调整某些东西并重新同步,这是一个重要的时间杀手。是否有任何好的,快速的,可编写脚本的替代方法,用于将静态文件同步到s3?
答案 0 :(得分:34)
我写了一个基于djangosnippet的可插入Django应用程序,它缓存远程文件的ETag并比较chached校验和,而不是每次执行查找。对于几百个静态文件,我每次调用大约1分30秒到大约10秒就需要manage.py collectstatic
。请在此处查看:https://github.com/antonagestam/collectfast
答案 1 :(得分:5)
在您的设置中将AWS_PRELOAD_METADATA
设置为True
,以便在同步之前预先加载s3上的所有文件,并仅同步那些尚未存在(或已更改)的文件。