コントローラーからActionResult
を返すとビューが実行されますか?または、ActionResult
は後で実行されるものへの参照ですか?コントローラアクションからActionResultを返すと、実際にその時点でビューが実行されますか?
コントローラーの操作でActionResult
リターンの一部をキャッシングしました。コントローラのアクション内で、このことを考えてみましょう:
if(isCached(someKey))
{
return cachedActionResult;
}
else
{
var model = new ALazyLoadedModel();
return View(model);
}
だから、最初の実行後、全体ActionResult
オブジェクトがキャッシュから返されます。 (そのモデルには遅延ロードされたプロパティがたくさんあるので、これらのプロパティがビューから呼び出されるときに実行の苦痛があります。したがって、モデルの実行とビューの実行は基本的に同じです。
しかし、パフォーマンスの向上は私が望んだものではありませんでした。モデルの作成とビューの復帰についていくらかのタイミングをとると、明らかにミリ秒単位で実行されています。Stopwatch
戻すにはわずか0.0958ミリ秒かかります(つまり、1秒間に約1/10000秒)。そのモデル/ビューが何をするかに基づいて、私はこれを少し信じ難いと感じます。
は、ここで私は疑うものだ - ActionView
のリターンはビューを実行し、実際にをしない、それだけでビューを初期化し、後で実行され、それへの参照を返します。これが当てはまる場合、このキャッシング戦略は明らかに役に立たないでしょう。
私の疑惑は正しいですか?または、実際にreturn View()
はビューを実行して、ビューの実行は私が思ったよりもはるかに高速ですか?
あなたのケースの 'cachedActionResult'は実際のレンダリングされたビューではなく、ビューを返す* intention *のみを含みます。応答全体を収集するには、出力キャッシュが必要です。 – haim770