從控制器返回ActionResult
時執行視圖嗎?或者是僅僅是對稍後執行的某些內容的引用?是否從控制器動作返回一個ActionResult實際執行該視圖?
我在緩衝區操作中放置了一些ActionResult
緩存。考慮這一點,一個控制器動作中:
if(isCached(someKey))
{
return cachedActionResult;
}
else
{
var model = new ALazyLoadedModel();
return View(model);
}
所以,在第一次執行之後,整個ActionResult
對象從緩存返回。 (這個模型有一堆懶惰加載的屬性,所以執行的「痛苦」是這些屬性被從視圖中調用出來,因此,模型的執行和視圖的執行基本上是相同的。)
然而,性能上的提升並不是我所希望的,當我在模型的創建和視圖的返回時放置了一些時間,它顯然在幾分之一毫秒內執行 - Stopwatch
表示它只需要0.0958毫秒的返回(所以,大約1/100000秒)。根據模型/視圖的作用,我覺得這有點難以置信。
這就是我懷疑 - 在ActionView
的回報實際上並不執行認爲,它只是初始化視圖,並返回對它的引用,這是以後執行。如果這是真的,那麼顯然這個緩存策略根本無濟於事。
我懷疑對不對?還是return View()
確實執行視圖,我的視圖執行顯然比我想象的要快得多?
您的案例中'cachedActionResult'只包含*意圖*來返回一個視圖,而不是實際的渲染視圖。您需要輸出緩存來收集整個響應。 – haim770