0

サーバーにdjangoプロジェクトをデプロイします。そのために、次の最適化を行う予定です。

  • 私が知りたいのは、何かが足りないということですか?
  • どうすればより良い方法でそれを行うことができますか?

フロントエンド:

  1. Django-static (静的メディアの圧縮用)
  2. CDN から jquery を実行する
  3. ヘッダーのキャッシュ制御
  4. Django db のインデックス作成 (特定のモデルの場合)

サーバ側:

  1. uswginginx
  2. Memcached (特定のクエリ用)
  3. メディアとデータベースを別々のサーバーに置く
4

2 に答える 2

1

これらは、私が定期的に使用するいくつかの最適化です。

フロントエンド:

  1. labjs 、 requirejsyepnopeなどの js 読み込みライブラリを使用します。それでも js ファイルを圧縮/マージする必要がありますが、ほとんどのユースケースでは、複数の js ファイルに対して複数のリクエストを行い、それらを並行して実行して、各ページで 1 つの巨大な js ファイルを実行する方がよいようです。リクエストと並列読み込みのバランスを取るのに適したグループに分けます。条件付きの読み込みとフェイルオーバーを許可するものもあります (つまり、何らかの理由で cdn された jquery が存在しなくなった場合)。

  2. 可能な場合はスプライトを使用してください。

バックエンド:

  1. django-compressor を構成します (django-static で問題ありません)
  2. nginx で gzip 圧縮を有効にします。
  3. postgresql (推奨される sql データベース) を使用している場合は、pgbouncer や pgpool2 などを使用します。
  4. キャッシュの使用と構成 (私は redis を使用しています)
  5. (すでに述べました-時間がかかる可能性のあるすべてのものにセロリを使用してください)
  6. 小さなデータベース作業: 必要に応じてインデックスを使用し、クエリの作成が多すぎる (本来の select_related を使用しない場合によくある) か、遅いクエリ (db でログの遅いクエリを有効にする) に注意してください。引数には常に select_related を使用してください。
  7. 検索を実装する場合は、常にスタンドアロンの検索エンジンを使用します。(エラスティックサーチ/ソル)
  8. 次に、アプリのプロファイリングを行い、コード固有の改善点を探します。注意すべき点がいくつかあります
于 2011-12-12T21:06:54.540 に答える
1

非同期および期間タスクをサポートする必要がある場合は、Celery をインストールするオプションがあります。その場合は、Memcached の代わりに Redis をインストールすることを検討してください。Redis を使用すると、セッションを管理したり、Celery 操作を実行したり、キャッシュを実行したりできます。

ここを見てください:http://unfoldthat.com/2011/09/14/try-redis-instead.html

于 2011-12-12T09:00:14.813 に答える