私たち(私のチームと私)には、多くのユーザー(少なくとも15,000人のユーザー!)を扱う大きなWebプロジェクトがあります。精緻化フェーズでは、MVCスタイルでコーディングすることにしました。私たちはトレードオフに直面します(このプロジェクトでは、すべてのアクションは認証されたユーザーによって実行される必要があります)。
設計の1つの方法は、コントローラーが要求を取得し、それに応じて要求の責任オブジェクトを作成(DBからロード)し、そのオブジェクトの参照がコントローラーに保存され、最後にコントローラーが次のセッションに追加されることです。ユーザー。このスタイルでは、コントローラーが、頻繁に発生する可能性のあるユーザーのアクションの中で複数の動作を行う、粗い詳細なクラスである必要があります。
設計の他の方法は次のとおりです。コントローラーはリクエストを取得し、リクエストの責任オブジェクトを作成しますが、このコントローラーはステートレスであり、たとえばWebサイトの1ページに従って特定の動作をします。このようにして、ページごとにコントローラーを作成する必要があります。一部のページで共通の情報が必要な場合は、DBまたはそのキャッシュからそれらをロードする必要があります。
- 最初のスタイルでは、作成とガベージコレクションが減少するため、コントローラーは粗い粒度のオブジェクトである必要があります。したがって、ユーザーが認証されてから1回だけ作成され、セッションが期限切れになるまでガベージになりません。セッションに存在するオブジェクトのライフサイクルは、セッションが期限切れになるまでなので、メモリ不足の原因になる可能性があると思います。
- 2番目のスタイルでは、ユーザーが他のページに移行するたびに1つのコントローラーを作成し、DBから情報を抽出する必要があります。これにより、パフォーマンスの問題が発生する可能性があります。
私のリクエスト:メモリ使用量とパフォーマンスの2つの側面でそれらを比較したいと思います!そして、何か提案があれば、私はそれについて言及したいと思います!
簡単な例については、以下の写真を参照してください。
http://v1.iimmgg.com/images/is7gr/fb0f6b763eea5294815dcb2d50a12f56.png