2

Codeigniter に基づいてアプリケーションでプロファイリングを有効にしたところ、驚くべき結果が得られました。

さらにデバッグすると、DB インタラクションや PHP 処理のない aboutus などの静的ページでも、次の値が非常に高いことがわかりました。読み込み時間: 基本クラス コントローラー実行時間 合計実行時間

構成ファイルをいじってみたところ、いくつかのモデルとライブラリのオートロードを削除すると、上記の 3 つの変数の値が大幅に低下することがわかりました。

何かがオートロードされると、それがメモリに残ると想定していました。これは正しいですか ?

また、コードで 70% の時間を必要とするモデルがある場合の結果を見て、パフォーマンスを向上させるために必要な場合にのみロードして、オートロードしないでください。

他の代替手段はありますか

4

1 に答える 1

2

自動ロードは一度実行されるものではなく、すべてのリクエストに対してメモリに保存されます。リクエストが行われるたびに、ルートの index.php が起動し、毎回最初からすべてをロードする必要があります。オートローディングの利点は、Codeigniter がすでにそれを行っているため、呼び出すたびに自分でロードする必要がないことです。コーディングが容易になります。ユーザーが何らかのリクエストを行うたびに、または特定の機能をグローバルにするたびに、モジュールを使用するときはいつでもオートロードする必要があります。たとえば、私url_helperはすべてのビューで使用しているので、自動ロードしただけなので、自分で手動でロードする必要はありませんでした。

モデルを自動ロードしてもパフォーマンスは向上しません。

手動でロードするには、http://ellislab.com/codeigniter/user-guide/libraries/loader.htmlを参照してください。

于 2013-02-15T14:39:58.197 に答える