13

我一直在使用 s3boto 的 S3BotoStorage 作为我的静态文件后端,并使用 ./manage.py collectstatic 将文件同步到我的 aws s3 存储桶(暂存和生产)。它工作正常。然而,它的速度非常缓慢。除了我自己的静态文件(只有几个)和 django admin 之外,我还有一些第三方包,其中包含许多静态文件(grappelli、django-redactor)。每次运行collectstatic 可能需要15 分钟以上,具体取决于我的互联网连接。例如,我正在与我的暂存桶同步并且事情不太正确,我必须调整一些东西并重新同步,这是一个很大的时间杀手。将静态文件同步到 s3 是否有任何好的、快速、可编写脚本的替代方案?

4

2 回答 2

47

我编写了一个基于 djangosnippet 的可插拔 Django 应用程序,它缓存远程文件的 ETag 并比较 chached 校验和,而不是每次都执行查找。manage.py collectstatic每次调用几百个静态文件,我从大约 1 分 30 秒到 10 秒左右。在这里查看:https ://github.com/antonagestam/collectfast

于 2013-07-08T13:57:14.567 回答
6

在您的设置中设置AWS_PRELOAD_METADATATrue,以便它在同步之前预加载 s3 上的所有文件,并且只同步那些不存在(或已更改)的文件。

于 2013-05-29T14:28:00.667 回答