3

私のアプリは非常に遅く動作しています。Cakephp2.3.1バージョンを使用しています。モデル、コンポーネント、ヘルパーを必要な機能にロードすることは有益でしょうか?今、私はクラスで彼らを呼んでいます。例えば:

class PanelsController extends AppController {
public $name = 'Panel';
public $uses = array(list of models goes here);
public $components = array(list of components goes here);
    .................
}

他にどのようなテクニックを提案しますか。ありがとう

4

4 に答える 4

8

これは、サイトのパフォーマンスが遅いかどうかを確認するものです

速度の最適化

  1. キャッシュを有効にする
  2. JSとCSSを圧縮します。(これを行う素晴らしいプラグイン
  3. 優れた速度最適化チェックリスト

ケーキの練習

  1. ケーキの規則は最良のガイドラインであり、フレームワークはその規則に合わせてスケーリングされるように設計されています。

  2. Recursion and Containable、デフォルトでは、Cakeはクエリが実行されたときにすべての関連データをフェッチします。再帰レベルと包含可能な動作の両方により、取得されるデータの量が制限される可能性があります。ケーキがデフォルトですべての関連データをフェッチする場合、それをそのように保持する必要があるという意味ではありません。

  3. DBを正規化してください。これにより、多くのプロセスを延期することができます。たとえば。投稿を取得するとき、cakeは関連するすべてのデータ(タグ、コメント)を自動的に取得します。ただし、高次の正規化されたDBがある場合、uはXHR/AJAXリクエストからのコメントの読み込みを延期できます。これにより、コメントのモデル、コントローラー、およびビューからコメント関連のロジックを提供することもできます。関連するモデルデータセットの制限を持ってきても。

  4. カウンターキャッシュを使用して、関連データのカウンタークエリの必要性をなくすこともできます。詳細はこちら

  5. ビューをキャッシュする

  6. クエリ結果を手動でキャッシュすることもできます。

    Cache::write($this->Post->find("all"));
    

それらを試してみると、驚くべき速度の向上を体験できるはずです。

最後に、アプリケーションのアーキテクチャがパフォーマンスに大きな役割を果たしていると思います。場合によっては、パフォーマンスを向上させるために、特定のロジックをリクエストのライフサイクルから分離する必要があります。

于 2013-03-08T07:03:11.397 に答える
5

public $uses()重要ではない。いくつでも追加できます。Cakeは、必要な場合にのみそれらをレイジーロードします。AppModelでデフォルトごとに取得recursive = -1し、それを上げるか、本当に必要なデータのみを含めるようにしてください。

ただし、コンポーネントはすべてすぐにロードおよび初期化されます。あなたはそれらを減らしたいかもしれません。

ただし、これら2つの属性をボトルネックにすることはできません。あなたは他のいくつかの深刻な問題を抱えているに違いありません。

また、デバッグモードでは想定しないでください。実際の速度は、追加のデバッグ情報が収集されず、キャッシュが常に置き換えられるわけではないdebug0で測定/監視されます。

編集:上記の私の言葉は「スピードの観点」からのみ意味されていることに注意してください。速度は関係ありません。ただし、リレーションおよびリレーションチェーンを介してモデルに到達できる場合は、$usesにモデルを追加することはお勧めしません。

それで、あなたがダッシュバードを作りたいとしましょう。$this->User->Profile->foo($bar)ほとんどの場合、プロファイル、画像、およびその他のモデルには通常、などを介して直接アクセスできるため、「ユーザー」モデルを追加するだけで済みます。

于 2013-03-06T13:14:01.323 に答える
0

Cakephpアプリの速度低下は、これまでに経験した多くの理由によって引き起こされる可能性があります。

  • DNSルックアップを実行しようとしていたmysqlサーバー
  • リバースルーティングを介してアセンブルされた多くのリンクを含むページをレンダリングする
  • メモリの問題

XDEBUG見つけるための最良の方法は、 1をインストールし 、プロファイリング情報を調べるようです

于 2013-03-06T13:59:47.827 に答える
0

時間を短縮するためにcakephpのキャッシュ技術を使用できます。ドキュメントについては、http://book.cakephp.org/2.0/en/core-libraries/caching.htmlを参照してください。

ロードモデルは使用しないでください。データコードが大きいと問題が発生します。

参考までに記事をご覧ください:(cakephpアプリを高速化するためのヒント) http://www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/

于 2013-03-06T13:40:18.083 に答える