Django-compressor: オフライン圧縮エラー

作成日 2013年09月25日  ·  6コメント  ·  ソース: django-compressor/django-compressor

私はこれをデバッグするのに1週間(2つの異なる別々の週)を費やしましたが、かなりイライラしています。 私はそこにあるほとんどすべての記事/ブログ投稿/問題を読んだと思います、そして何をすべきかわかりません。 ステージングサーバーと本番サーバー(それぞれに個別のs3バケットがあります)の両方があります。これはステージングでは機能しますが、サーバー(Heroku上)とバケットが同一であっても本番では機能しません。

圧縮タグが子テンプレートにのみ表示されるように作成しました。 compressタグ内からすべてのテンプレートタグを削除しました(たとえば、if / else)。つまり、より多くのcompressタグがあるため、if/elseステートメントをcompressタグの外側に置くことができます。

誰かが見るためにどこでも本番環境で機能するオフライン圧縮を設定していますか? compress offfline = Falseの場合、サーバーにかなりの余分な負荷がかかり、多くの場合、300〜500ミリ秒の余分な遅延が発生します。これは明らかに価値がなく、このパッケージの目的全体を無効にします。

私は本当にいくつかの助けを使うことができましたが、基本的にこの時点で何をすべきかわかりません。なぜなら、ここの問題リストや他のブログ投稿で何百人もの人々と同じ問題を読むことができ、再現可能な解決策はないようです提案されています-これは、パフォーマンスにとってこれほど重要であり、おそらくすべてのDjangoデプロイメントに必要なものにとって大きな問題です。

deployment

最も参考になるコメント

昨日、私は同じ問題を解決するのに忙しかったのですが、誰かに役立つ場合に備えて、これが修正されたものです。

問題が再現可能なテンプレートの1つでは、コンテキストを使用していました。 オフライン圧縮中はコンテキストにアクセスできないため、オフライン圧縮中に生成されたキーと、応答サイクルからのキーは明らかに異なります。

コンテキストに依存しているJavaScriptの部分を、compressタグの外側にある別のブロックに分離してみてください。

うまくいけば、この情報が誰かに役立つでしょう。

全てのコメント6件

こっちも一緒。 django_compressorのCOMPRESS_OFFLINEは、解決するよりも多くの問題を引き起こすようです。 このようなメッセージを受信したため、動作させることができません。

OfflineGenerationError: You have offline compression enabled but key "%s" 
is missing from offline manifest. You may need to run "python manage.py compress".

こっちも一緒 :/

オフライン圧縮を機能させることができません。 引き続きOfflineGenerationErrorを取得します。

したがって、すべてのWebサーバーにデプロイするたびに次のコマンドを実行するようにしました

python manage.py compress --force
python manage.py collectstatic

これにより、manifest.jsonファイルが更新されます。 また、マニフェストファイルの名前がプッシュごとに異なることを確認します。 バージョン番号を追加するように。 マニフェスト_%s.json
プラグイン%sに最新のgit commithashidを使用します。 そのため、デプロイ中にgit pull、compress、collectstaticを実行し、新しいmanifest.jsonファイルを使用して新しい縮小/集約されたcss/jsを作成します。
そして、apacheを再起動します。 したがって、すべてがスムーズである必要があります。

また、collectstaticが--clearを呼び出さないようにして、古いstatic/*メディアを削除しました。

わかる?

わかりました、私はまったく同じ問題を抱えています。
誰かがこれをS3から信頼できる方法でオフラインで実行していますか?

してみてください:
http://stackoverflow.com/a/31545361/1359475

昨日、私は同じ問題を解決するのに忙しかったのですが、誰かに役立つ場合に備えて、これが修正されたものです。

問題が再現可能なテンプレートの1つでは、コンテキストを使用していました。 オフライン圧縮中はコンテキストにアクセスできないため、オフライン圧縮中に生成されたキーと、応答サイクルからのキーは明らかに異なります。

コンテキストに依存しているJavaScriptの部分を、compressタグの外側にある別のブロックに分離してみてください。

うまくいけば、この情報が誰かに役立つでしょう。

このページは役に立ちましたか?
0 / 5 - 0 評価