7

現在、Zendフレームワーク1.11.11とDoctrine2.2を使用してWebアプリケーションを構築しています。使用するフレームワークを最適化するための最良の方法とハックをたくさん探しました。

Zendフレームワークの最適化を検索しているときに、この投稿に出くわしました: Zendフレームワークの最適化

それについて興味深いのは、フレームワーク自体の使用法から生まれ、マニュアル自体ではカバーされていない、次のようないくつかの最適化手法について言及していることです。

  • viewRendererを無効にして、ビューのレンダリングを自分で行います。

今、私は、マニュアルでここに言及されているもの以外に、Doctrine2に適用できる同様のテクニックを探しています。

ノート

多くの人がクエリのプロファイリング、キャッシュ、アプリのボトルネックの発見について言及することを知っていますが、それは探しているわけではありません:)Doctrine2の使用中に発見された実用的な拡張機能を探しています。

ありがとう ;)

4

1 に答える 1

11

Doctrine2の最適化とハッキングは簡単な作業ではありません。公式の「ベストプラクティス」に従うようにアドバイスすることしかできません。

  • クエリキャッシュを使用する
  • メタデータキャッシュを使用する
  • 事前生成プロキシ
  • リスナーを避けます(またはイベントタイプ(フラッシュ、更新)でそれらをマージします。これにより、サブスクライブされたイベントのルックアップ時間とループが回避されます)
  • 可能な場合は常に遅延読み込みを使用してください
  • あなたの関係や継承が台無しにされていないことを確認してください

(アプリケーションを最適化する方法ではないはずの結果キャッシュについては触れなかったことに注意してください)

私の使用から、最適化する必要があった最も重要な部分はDoctrine自体ではなく(コアに対して行う最適化があります)、生成されたクエリは、いつものようにEXPLAIN、クエリと最適化されたインデックスを編集しました。

Doctrine 2はメモリを大量に消費する可能性があるため、一度に多数のエンティティをロードするとアプリケーションの速度が低下する可能性があります。メソッドについて知っておくと便利ですclear()detach()iterate()

Doctrine 2は時々遅くなる可能性があるという事実にもかかわらず、私はほとんどの場合、ZendFrameworkまたはPHP自体のどこかでアプリケーションを最適化できたことに気づきました。

たとえば、Doctrine 2は100ミリ秒かかりますが、Zend Frameworkは300ミリ秒かかり、合計で450ミリ秒かかります(I / Oスタッフ、PHP内部関数など)。

Zend Frameworkにかかる時間を2で簡単に割ることができる場合、Doctrine 2を10%程度に最適化しても、アプリケーションの速度はそれほど向上しません。よく考えてください。

ここにいくつかのヒントがあります:

  • ビューヘルパーを使用する代わりに、独自のビューを作成します(ヘルパールックアップを回避します)
  • Zend_Configオブジェクトをキャッシュします(非常に重い負荷)
  • 可能な限り正規表現ルートを避けてください(ZFルートは大きなボトルネックです)
  • ネイティブのZend_Loader_Autoloaderの代わりにClassMapオートローダーを使用する

実行する最適化はたくさんありますが、実際に影響を与えるものとそうでないものがあります。

アプリケーションをプロファイリングしてそれらを見つけてください。簡単でクロスプラットフォームなのはwebgrindを使用することです。

于 2012-05-10T12:04:09.977 に答える