2

CakePHP のすべてのドキュメントでは、requestAction が CakePHP のパフォーマンスを低下させると書かれています。コントローラー アクションを使用し、ビュー ファイルで結果を取得することを常にお勧めします。しかし、requestAction が本当に必要な場合もあります。

CakePHPの本

requestAction をキャッシュせずに使用すると、パフォーマンスが低下する可能性があります。コントローラーまたはモデルでの使用が適切であることはめったにありません。

reuqestAction を実行してパフォーマンスを低下させるプロセス。

requestAction のパフォーマンスの低下を防ぐために何をすべきですか? そのようなものを追加しますか?

$this->autoRender = false
コントローラーアクションに、

function beforeFilter() {
  if ( $this->params['action'] == "myaction" ) { return; }
}

コントローラークラスへ

4

3 に答える 3

1

それがどのように書かれているかを見ることから始めることができます。

私が読んだように、URLを再解析するたびに( でRouter::normalize())、新しいCakeRequestインスタンスを作成し(常に構成をロードします)、Dispatcher::dispatch().

PS ..それは巨大な混乱です。キャッシュがどの時点で使用されているかさえわかりません..もしあったとしても。

于 2012-06-10T16:44:03.950 に答える
1

(CakePHP の 1 年半の経験の後) requestAction がある場合、リファクタリングの必要性があると言えます。最初の数か月は、requestAction を追加しすぎていました。requestAction がパフォーマンスを低下させるという情報を取得した後、これ以上追加しませんでした。

数か月が経ち、ほぼすべての requestAction をコードから削除しました。大きなコード リポジトリでは、requestAction は 3 ~ 4 個しかなく、1 日に 1 回しかヒットしません。requestAction を使用すると、コントローラー レイヤーからビュー レイヤーへの貴重な情報が失われます。使い方を考え直してください。

于 2013-10-26T17:33:32.180 に答える
1

基本的に requestAction() は、追加のページ リクエストでアクションにヒットします。さらに、requestAction() は、文字列以外のデータを返すため、URL の扱いが異なります。したがって、コントローラーでは、最初に戻り要求のタイプを確認する必要があります。

requestAction()に関する良い記事はこちら

于 2012-06-10T16:39:19.580 に答える