[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'
파일 압축을 자동으로 처리하고 각 버전에 대해 고유한 이름을 생성하여 안전하게 영원히 캐시할 수 있도록 합니다.
댓글