如何避免使用django包和/或凉亭在collectstatic中拥有数千个文件?

时间:2015-11-09 02:02:49

标签: django amazon-web-services amazon-s3

我正在使用几个django包(rest_framework,...)和几个凉亭包(summernote,...)。在进行collectstatic时,会收集大量文件,包括应用程序当然不需要的文件(示例,......)

因此,我最终将大约10000个文件同步到S3以获取一个非常小的网站,这没有任何意义。如何使整个过程更加明智?

我会说罪魁祸首是django的collectstatic,而不是我所说的aws s3 sync:从collectstatic上传所有内容。

1 个答案:

答案 0 :(得分:1)

我可以与您分享我们的方法:我们从不将bower_components和其他此类库直接放在静态目录中。我们把它们放在其他地方,然后有一个grunt任务,只将我们需要的文件复制到静态目录中。

基本设置类似于:

grunt.initConfig({
    // Copy only the stuff we need from bower_components
    copy: {
        all: {
            files: [
                // JS
                {
                    expand: true, flatten: true,
                    // You can be more generic with something like "bower_components/**/*.min.js"
                    src: [
                        "bower_components/bootstrap/dist/js/*.min.js",
                        "bower_components/jquery/*.min.js"
                    ],
                    dest: "static/js/"
                },
                // Same for CSS
            ]
        }
    }
});

这种方法有它的缺点 - 你现在有一个额外的配置来维护你的bower.json等等。它也只会帮助处理你的生成的文件应用

除此之外,您还可以向aws s3 sync添加一些--exclude模式,以滤除最明显的绒毛。这里有一个警告,如果你不小心你排除了什么,你最终可能会导致比你解决的问题更多的问题!