본문 바로가기
heroku & salesforce

[heroku] Django static 깨짐 현상 & WHITENOISE 설정

by 배추잠자리 2022. 6. 3.
반응형

[heroku] 장고 static 경로문제 & static 깨짐 & WHITENOISE 설정

[heroku] Django static 깨짐 현상 & WHITENOISE 설정

 

로컬에서 잘 되던 프로젝트가 DEBUG=false 로 heroku APP에 푸쉬하면 static 경로를 못읽거나 싹 다 깨지는 경우가 발생합니다.

 

이 경우는 static 경로 및 캐싱관련 설정 문제인데요.

 

WHITENOISE 설정을 해주어야 합니다.

 

 

■ MIDDLEWARE

 

MIDDLEWARE 설정에 'whitenoise.middleware.WhiteNoiseMiddleware' 를 추가해줘야합니다.

whitenoise 미들웨어는 django.middleware.security.SecurityMiddleware 의 하단부에 위치해야 합니다.

 

'django.middleware.security.SecurityMiddleware'

'whitenoise.middleware.WhiteNoiseMiddleware'

 

 

■ WHITENOISE 설정

 

WHITENOISE_USE_FINDERS = True
WHITENOISE_MANIFEST_STRICT = False
WHITENOISE_ALLOW_ALL_ORIGINS = True
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

 

WHITENOISE_USE_FINDERS => Django의 "finders" API를 사용하여 원래 디렉토리에서 파일을 찾고 제공합니다. 

WHITENOISE_MANIFEST_STRICT => MANIFEST 존재하지 않는 정적 파일을 참조하는 경우 Django에서 오류가 발생하지 않도록 설정하는 부분입니다.

WHITENOISE_ALLOW_ALL_ORIGINS => 모든 정적 파일에 대한 헤더를 보낼지 여부를 체크합니다. [ Access-Control-Allow-Origin: * ]

 

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

같은 경우에는 Django의 ManifestStaticFilesStorage 백엔드에서 제공하는 캐싱 동작과 자동 압축을 결합합니다. 압축을 적용하고 싶지만 캐싱 동작은 하지 않도록 합니다.

 

# 반대되는 설정으로는 

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 

파일 압축을 자동으로 처리하고 각 버전에 대해 고유한 이름을 생성하여 안전하게 영원히 캐시할 수 있도록 합니다.

반응형

댓글