从控制器返回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