2016-08-03 3 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 파일을 프로젝트 (모든 라이브러리 포함)에서 후 처리하는 것을 기다리는 동안 파일을 변경할 때마다 너무 많은 개발 환경을 요구할 수 있습니다.

.jss 및 .svg 파일은 변경되지 않았지만 .css 파일은 올바르게 표시되지 않으므로 WhiteNoise의 버그처럼 느껴집니다. 이 동작을 본 사람이 있습니까?

답변

3

이것은 WhiteNoise의 버그가 아니라 장고의 기능입니다. CSS 파일에 다른 정적 파일 (일반적으로 이미지)에 대한 참조가 포함될 수 있으며 캐시 바 스팅 메커니즘을 사용하면 내용이 변경 될 때마다 이미지 파일의 이름이 변경됩니다 . 따라서 CSS 파일의 처리 된 출력은 원본 CSS 파일이 변경되지 않은 경우에도 변경 사항을 참조 할 수있는 이미지 중 하나가 내용을 변경했기 때문에 변경 될 수 있습니다. 이것이 Django reprocesses이 매번 CSS 파일을 사용하는 이유입니다.

그러나 파일 변경 사항을 적용하려면 collectstatic을 실행할 필요가 없습니다. WhiteNoise는 DEBUG 설정이 True 일 때 처리되지 않은 파일을 직접 처리하는 표준 Django 동작을 따릅니다.

+0

대단히 감사합니다. WhiteNoise가 디버그 모드에서 collectstatic을 필요로하지 않는다는 것을 알지 못했습니다. 디버깅주기가 크게 빨라질 것입니다. Django가 CSS 파일에서 재 처리가 필요한 작업을 수행 할 수는 없지만 일반적으로 어쨌든 깨끗한 상태에서 수행되는 제작 빌드에서는 비효율적이지 않습니다. –

관련 문제