2016-08-03 19 views
0

DjangoプロジェクトでWhiteNoiseを使用しています。Django WhiteNoiseはCSSファイルを後で繰り返し処理する

私の問題はcollectstaticコマンドを実行しているときです。 WhiteNoiseは変更されていなくても、すべての.cssファイルを後処理します。 .jsまたは.pngファイル、.cssファイルのみを後処理する必要はありません。

これはWhiteNoiseのバグのようです。誰もこの行動を見たことがありますか?

例:

私はcollectstaticを初めて実行するには、ファイルのすべては、ジャンゴによってコピーされ、ホワイトノイズによる後処理:

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. 

これは、すべて正常に動作しています。

しかし、私はすぐに、ホワイトノイズの後処理再び.cssファイル(任意のファイルを変更せずに)再びcollectstaticを実行する場合:私はとして開発にホワイトノイズを使用して検討していますので、これは私にとって問題である

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

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

を私の開発環境と本番環境の違いを最小限に抑えるため、プロダクションでも同様に使用します。 WhiteNoiseがファイルを変更するたびに、プロジェクト内のすべての.cssファイル(ライブラリを含む)を後処理するのを待つことは、開発環境を求めるのがはっきりしすぎることです。

ホワイトノイズのバグは、.jsファイルと.svgファイルが変更されていますが、.cssファイルは正しく認識されないため、WhiteNoiseのバグのようです。 誰もこの動作を見ていますか?

答えて

3

これはWhiteNoiseのバグではなく、Djangoの機能です。CSSファイルには他の静的ファイル(通常は画像)への参照が含まれている可能性があり、キャッシュの破棄メカニズムによって内容が変更されると。そのため、元のCSSファイルが処理していない場合でも、処理されたCSSファイルの出力が変更される可能性があります。これはDjango reprocessesが毎回CSSファイルを使用する理由です。

ただし、変更をファイルに反映させるために開発中にcollectstaticを実行する必要はありません。 WhiteNoiseは、DEBUGの設定がTrueの場合、未処理のファイルを直接処理する標準のDjangoの動作に従います。

+0

ありがとうございました!私はWhiteNoiseがcollectstaticをデバッグモードで必要としていないことに気付かず、デバッグサイクルを大幅に高速化します。 DjangoがどのCSSファイルに再処理が必要なのかは分かりませんが、通常はクリーンな状態から行われるプロダクションビルドではそれほど非効率的ではありません。 –

関連する問題