2009-07-29 4 views
2

私はcakephpでFacebookアプリケーションを作成しました。このアプリケーションは他のアプリに比べて非常に遅いです。cakephpを使ったアプリケーションは非常に遅い

速度を上げるためにはどうすればよいですか?この問題は私をナットにしているので、何かを提案してください。

おかげ

+1

私たちはより多くの情報が必要になるだろうと思います。それは遅い特定の部分はありますか?いくつかのコードを投稿できますか? – inkedmn

+0

CakePHPは非常に遅く、一般的である - あなたはこれに対する総合的なソリューションは、私に知らせて見つけた場合;) –

+0

あなたの格言のいずれかの証拠を持っていない、私はあなたがそう思う行われたリンクやリソースを言うことを意味します。 –

答えて

2

あなたはcore.phpの中で '0' にデバッグを設定しましたか?そうでなければ、それはあなたに巨大なスピードブーストを与えるでしょう。

+0

あなたの助けてくれてありがとう、私はそれをしましたが、速度の向上は全くありません:-( –

3

我々は、FBのアプリのためにだけでなく

CakePHPのを(すぐに使用)のCakePHPを使用するだけ遅くなるように思われます。

はとにかく多分これは役立ちます:

私のFacebookの具体的なヒントや教訓:

  • するために必要な最小
    • 使用FBMLに、すべてのAPI呼び出しを減らすwhereeverすることができます
  • バッチ可能なすべてのAPIコールをバッチ処理する
    • バッチ全てFQL APIは、各APIの出力はあなたが
      • キャッシュそれをmemcacheのでまたはキャッシュ用にRAMディスクを実行します::ファイル
    • 次のページで必要になります呼び出す
  • キャッシュを呼び出し、

ジェネリック必見-DOの

  • 使用memcacheの
  • ない100%クイックレスポンスをシミュレートするjavascriptの効果あなたは非同期に行うことができますすべてのもの(crondispatcher)
  • 使用を行うファイルシステム
  • をヒットしない
  • を必要に応じて、データベースをヒットしない
+0

「javascriptの効果によって、速いレスポンスをシミュレートする」という意味ですか? この手法については少し気をつけてください。 –

+0

私はアヤックス基本的にはそう、彼はすなわちAjaxの –

+0

、asyncronousリクエストの話だと思う - あなたは、サーバーの応答を待ついけない形式にコンテンツを追加してフォームを送信した場合 - あなたはどこかに送ってからコンテンツを削除した場合に追加されたコンテンツ として表示サーバーへの応答と瞬時に要素をフェードアウトなど –

1

これは一般的に遅いサーバー側のコードではありません。私はCakePHPがあなたを減速させるのを疑う。アプリケーションのロードに費やされた時間の80〜90%を占めるのは、DBアクセス、Facebook API呼び出し、およびHTMLレンダリング(Use YSlow!)です。

+0

あなたの答えのおかげで、私は、私は –

+0

..私はそれだけで一つのテーブルからレコードを表示するために実行されるクエリの数を見てショックを受けた「の」デバッグモードを設定すると、それはDBへのアクセスであるので、CakePHPは遅いと思います問題ない?あなたはサーバー側のコードをプロファイリングしてみましたか?複数のクエリを作成しても必ずしも処理が遅くなるわけではありません特にデータベースに大量のデータがない場合。 –

0

はキャッシュがオフになって、あなたが行ってDBクエリを大量に表示された場合、あなたはおそらくしている(ここで終わる検索結果のためにここに返信する)ので、CakePHPはデータベーステーブルの完全な説明を取得しようとしますページが実行されるたびにこれをオンにして、キャッシュが実際にディスク(またはmemcacheなど)に書き込まれていることを確認します。

FacebookへのAPI呼び出しの量を制限すると、アプリケーションの速度が大幅に向上するはずです。

1

マット・カリーによるこの本は役に立つかもしれません:ページ54 @

http://www.pseudocoder.com/Super_Awesome_Advanced_CakePHP_Tips.pdf

- >

"あなたのケーキのアプリケーションを高速にする" そして、あなたが言及した本をconserningとして以前:

に「私は、私はデバッグモードを設定するときので、CakePHPは遅いと思う 『』私はそれが単一のテーブルからレコードを表示するだけで動作しますクエリの数を見てショックを受けました..」

すべてのモデルにこれを設定してみてください:

var $recursive = -1; 

そして、必要なときだけ再帰クエリを使用します。また、debug> 0を使用したときに表示されるクエリの一部は、Cakeがモデルキャッシュを更新しているためです。 (カレルはすでに述べたと同様。)