【问题标题】:Removing collected static files删除收集的静态文件
【发布时间】:2020-10-01 16:31:27
【问题描述】:

几周前我运行了collectstatic,我想删除大部分 (99.5%) 收集的文件,以便在部署到生产环境时不必存储它们。我尝试了collectstatic --clear,但这删除了它们,然后将删除的文件放回原处(不确定该命令的实际意义是什么。文档说明它用于“删除过时的静态文件”,但它肯定不会这样做那)。有没有办法清除收集到的文件?

我一直在使用this page of the Django docs 尝试找到解决方案,但没有任何运气。

【问题讨论】:

  • 我很抱歉,但我不知道您对 collectstatic 有什么问题,对吧。接受的答案使理解发生的事情变得更加困难。首先让我们解释一下 collectstatic:它收集已安装包中的所有 js/css 文件并将它们移动到静态文件夹(可通过 apache 访问浏览器)因此,如果“将许多文件放在静态中”,如您所述,它只是安装的包中所有静态文件的总和。通常,您安装软件包以将静态文件部署到 apache/浏览器/用户。那么为什么要跳过需要的 js/css 文件呢?
  • 这个问题是在我刚接触 Django 时提出/回答的。我正在经历我的第一次部署。如果我没记错的话 - 我收集了很多我不再需要的静态文件和文件夹,这使得我的 collectstatic 命令花费的时间比他们需要的要长得多。认为当我实际需要的少数文件可以在 10 秒内收集到时,他们将需要接近 20 分钟。然而,一旦收集了一个文件,要防止它被 collect static 命令带回是很棘手的。 @tzanke

标签: python django django-staticfiles


【解决方案1】:

完成这项工作需要有趣的命令和操作组合。将我的静态文件夹替换为仅包含所需内容的新文件夹后,

的基本命令
collectstatic --noinput --clear --no-post-process

大部分文件被清除而不是重新复制。但是,js 和 css 文件仍在复制中。为了让系统忽略这些文件而不复制它们,我对每个被复制的 JS 和 CSS 填充文件夹使用了 --ignore 标记。就我个人而言,这个额外的命令看起来像这样:

--ignore facebook --ignore gis

最后,另一个用户的完整命令模式如下所示:

collectstatic --noinput --clear --no-post-process --ignore [JSfolder0] --ignore [JSfolder1] --ignore [JSfolder2]

【讨论】:

    【解决方案2】:

    您为什么不简单地删除静态文件夹内容并使用 collectstatic 重新创建它?它应该只收集更新的文件。在此之前进行备份,您还可以比较新旧文件夹内容是否减少。

    【讨论】:

    • 我已经尝试过了,文件被替换到新的静态文件夹中,我收到消息“4972 静态文件复制到 '/static',31 未修改。” 31 是我想要保留并放置在新静态文件夹中的文件,4972 是我从文件夹中删除的文件。
    • 也许可以使用 -n 进行试运行以查看您正在收集什么,然后使用 -i 忽略您不想被复制的目录?
    • 几乎正确,而不是使用 -n 进行空运行,我必须使用 --clear 和 --no-post-process 命令,然后按照您的建议忽略指定的文件夹。感谢您的帮助。
    猜你喜欢
    • 2015-08-12
    • 2014-01-25
    • 1970-01-01
    • 2021-05-08
    • 2012-03-16
    • 2015-01-28
    • 2016-02-02
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多