2017-11-30 3 views
2

私は最近、Heroku上で実行されるWhitenoise for my Djangoプロジェクトを有効にしました。私は、ドキュメントのこの部分から可能であるように見えると同じように、ホワイトノイズは自動的に私の静的なファイルを圧縮したい: http://whitenoise.evans.io/en/stable/django.html#add-compression-and-caching-supportWhitenoiseは静的ファイルを自動圧縮する必要がありますか?どうやって?

しかし、私の設定に以下を追加した後:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 

を、私は私のことを見つけますファイルは圧縮されていません!しかし

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場合、私はちょうどすべてをgzip圧縮するために私のビルドプロセスにいくつかのスクリプトを追加する必要がありますか、またはホワイトノイズがこれを含みません?もしそうなら、誰かが私が何が欠けているのか、間違っているのか考えているのですか?私は本当にすべてのキャッシュを永久にキャッシュする能力(上のドキュメントで宣伝されている)が好きです

+0

これは、開発ではなく、プロダクションでこの動作が見えているようです。 http://whitenoise.evans.io/en/stable/django.html#using-whitenoise-in-developmentを見たことがありますか? – Alasdair

+0

こんにちはアラスデール、はい、言うことを無視して申し訳ありません!私はそれを見て、私のINSTALLED_APPSに「whiteno.runserver_nostatic」を追加しました--Nostaticフラグ自体は私のためには機能しません: 'manage.py runserver:error:認識できない引数:--nostatic' –

答えて

1

collectstatic管理コマンドを実行すると自動的に圧縮が行われます。このコマンドは、ヘロクによってビルドプロセスの一環として実行されるため、圧縮サポートを得るために何もする必要はありません。

ローカルでテストする場合は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'を実行した後、圧縮されたファイルを別のディレクトリに置いていました。 staticfilesを正しく設定しておく必要があります。私はここからデバッグすることができます。ありがとうございました!! –

関連する問題