白噪声真的需要静电消除吗?

时间:2018-11-07 12:02:15

标签: django whitenoise

我正在探索使用whitenoise在Docker容器中打包的Django应用程序中提供静态文件。在文档中说:

  

在部署应用程序时,您需要运行./manage.py collectstatic将所有静态文件放入STATIC_ROOT中。 (如果您在Heroku上运行,那么这将自动为您完成。)

真的需要吗?我没有运行./manage.py collectstatic,仍然可以使用静态文件。

如果不需要,这是一种优化吗?我试图避免在部署过程中采取不必要的步骤。

1 个答案:

答案 0 :(得分:3)

如引述所言,Whitenoise提供STATIC_ROOT中的文件。 collectstatic从STATICFILES_DIRS和任何应用程序特定的静态目录中收集文件,并将它们放入STATIC_ROOT。

但是在两种情况下,它将在不运行collectstatic的情况下提供文件。第一种是您的文件是否已在STATIC_ROOT中 。他们不应该这样,但是将STATIC_ROOT的值设置为包含源文件的目录是一个常见的错误。但是,在这种情况下,它不会例如找到需要收集的管理文件。

另一种情况是如果您使用DEBUG = True运行。 Whitenoise为其USE_FINDERS setting继承了此值,这使得它看起来与collectstatic本身位于同一位置以提供文件。显然,您不想在启用DEBUG的情况下在生产环境中运行,但是可以显式设置此设置。但是正如该文档链接所指出的那样,这样做将禁用Whitenoise的缓存和压缩功能。