2017-11-30 2 views
2

최근 Heroku에서 실행되는 Whitenoise를 내 장고 프로젝트에 사용할 수있게되었습니다. 내 설정에 다음을 추가 한 후, http://whitenoise.evans.io/en/stable/django.html#add-compression-and-caching-supportWhitenoise가 정적 파일을 자동 압축해야합니까? 방법?

그러나 : 나는 문서의이 부분에서 가능할 것 같다로서 백색 잡음이 자동으로 내 정적 파일을 압축 할

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 

나는 것을 발견 내 파일은 압축되지 않습니다! 내가 수동으로 파일 중 하나 gzip을 경우

curl -H "Accept-Encoding: gzip" -I http://localhost:8080/static/app/js/auth.min.js 

HTTP/1.0 200 OK 
Date: Thu, 30 Nov 2017 17:14:27 GMT 
Server: WSGIServer/0.2 CPython/3.5.2 
Last-Modified: Thu, 30 Nov 2017 01:45:33 GMT 
Content-Length: 103648 
Content-Type: application/javascript; charset="utf-8" 
Cache-Control: max-age=0, public 
Access-Control-Allow-Origin: * 

그러나, 모든

$ gzip ../app/static/app/js/auth.min.js 
$ curl -H "Accept-Encoding: gzip" -I http://localhost:8080/static/app/js/auth.min.js 
HTTP/1.0 200 OK 
Date: Thu, 30 Nov 2017 17:21:47 GMT 
Server: WSGIServer/0.2 CPython/3.5.2 
Last-Modified: Thu, 30 Nov 2017 17:14:53 GMT 
Content-Type: application/javascript; charset="utf-8" 
Cache-Control: max-age=0, public 
Access-Control-Allow-Origin: * 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 21870 

난 그냥 모든 것을 gzip을 내 빌드 프로세스에 일부 스크립트를 추가 할 필요가, 또는 백색 잡음이 포함되어 있습니까 다만 복숭아 작동 ? 만약 그렇다면, 내가 누락되거나 잘못 될 수있는 일을 누군가는 알고 있습니까? 모든 것을 캐시에 보관할 수있는 능력 (위의 문서에 나와있는대로)을 정말 좋아할 것입니다.

+0

제작 과정이 아닌 개발 과정에서이 동작이 나타나는 것 같습니다. http://whitenoise.evans.io/en/stable/django.html#using-whitenoise-in-development를 보셨습니까? – Alasdair

+0

헤이 Alasdair, 말을 게을리해서 미안해, 그래! 나는 그것을 보았고 제안 된대로 'INSTALLED_APPS'에 'whitenoise.runserver_nostatic'을 추가했다. --Nostatic 플래그 자체가 나를 위해 작동하지 않기 때문에 : 'manage.py runserver : error : 인식 할 수없는 인수 : --nostatic' –

답변

1

collectstatic 관리 명령을 실행하면 압축이 자동으로 수행됩니다. 이 명령은 빌드 프로세스의 일부로 Heroku가 실행하므로 압축 지원을 받기 위해 다른 작업을 수행하지 않아도됩니다.

로컬로 테스트하려면 collectstatic을 실행 한 다음 DEBUG = False과 함께 앱을 실행해야 프로덕션 환경에서와 동일한 동작을 얻을 수 있습니다.

+0

이봐, 응답 주셔서 감사합니다! 그것은 유명 인사와 이야기하는 것과 같습니다! 나는 DEBUG = False이고 whitenoise.runserver_nostatic 앱이 설치되어 있어도'python manage.py collectstatic'을 실행 한 다음에'python manage.py runserver localhost : 8080'을 실행 한 후 내 응답에서 gzip 인코딩을 얻지 못합니다. 서버를 실행하기 전에 수동으로'gzip' 명령을 실행하면 gzip 인코딩 만받습니다. 나는 Heroku에 배치를 테스트했고 수동으로하지 않는 한 정적 파일도 압축하지 않았습니다. –

+0

오, 당신이 올바른 방향으로 나를 지적했다고 생각합니다! 나는'collectstatic'을 실행 한 후 다른 디렉토리에 압축 된 파일 버전을 발견했습니다. 정적 파일을 잘못 구성해야합니다. 여기에서 디버깅 할 수 있습니다. 고맙습니다!! –

관련 문제