繁体   English   中英

Django WhiteNoise collectstatic反复对CSS文件进行后期处理

[英]Django WhiteNoise collectstatic repeatedly post-processes CSS files

我在我的Django项目中成功使用了WhiteNoise。

我的问题是在运行collectstatic命令时。 WhiteNoise对我的所有.css文件进行后处理,即使它们没有更改也是如此。 它不需要对.js或.png文件进行不必要的后处理,而仅对.css文件进行后处理。

这似乎是WhiteNoise中的错误。 还有其他人看到过这种行为吗?

一个例子:

第一次运行collectstatic ,所有文件都由django复制并由WhiteNoise后处理:

Copying '<path...>.svg'
Copying '<path...>.js'
Copying '<path...>.css'
Copying '<path...>.txt'
... etc ...
Post-processed '<path...>.svg'
Post-processed '<path...>.js'
Post-processed '<path...>.css'
Post-processed '<path...>.txt'
... etc ...

77 static files copied to 'C:\<path...>\staticfiles', 77 post-processed.

这一切都正常工作。

但是,如果我立即再次运行collectstatic (不修改任何文件),则WhiteNoise会再次对.css文件进行后处理:

Post-processed '<path...>.css'
Post-processed '<path...>.css'
... etc ...

0 static files copied to 'C:\<path...>\staticfiles', 77 unmodified, 13 post-processed.

这对我来说是个问题,因为我正在考虑在开发和生产中使用WhiteNoise,以最大程度地减少开发和生产环境之间的差异。 每当我更改任何文件时,等待WhiteNoise对项目中的每个.css文件(包括任何库)进行后期处理显然都太过要求开发环境了。

感觉就像是WhiteNoise中的错误,因为它正确地注意到.js和.svg文件没有更改,但.css文件没有更改。 还有其他人看到过这种行为吗?

这是Django的功能,而不是WhiteNoise中的错误:CSS文件可以包含对其他静态文件(通常是图像)的引用,并且缓存清除机制会导致这些图像文件的名称在内容更改时更改。 因此,即使原始CSS文件没有更改,CSS文件的处理后的输出也可以更改,这仅仅是因为它所引用的图像之一已更改了其内容。 这就是Django每次都要重新处理 CSS文件的原因。

但是,您无需在开发中运行collectstatic即可对文件进行更改。 DEBUG设置为True时,WhiteNoise遵循Django的标准行为,即直接提供未处理的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM