我正在对asp.net MVC 2应用程序进行良好的性能调整(webforms作为视图引擎,linq2SQl作为orm层)。 我正在使用mvc mini-profiler来分析页面渲染。 我现在没有使用任何输出缓存。
我注意到我网站的几乎所有页面都有一些奇怪的行为。
当我第一次点击页面时,需要 200ms 进行渲染,其中我有大约 15ms 的db查询时间(调用存储过程)。
对同一页面的所有后续匹配都会在大约 20ms 中呈现,其中查询保持为大约15ms。所以在这种情况下,我假设页面呈现在 6ms 。
如果我没有点击页面大约 5分钟(并且没有任何其他请求),我现在尝试点击同一页 200ms 以 18-20ms 的顺序呈现所有后续调用。 此外,我已经验证没有发生IIS应用程序池回收。
怀疑MVC框架中的某个地方有一个缓存,在几分钟后失效并且需要进行微调。
有什么想法吗?
答案 0 :(得分:2)
webforms视图位置的默认缓存大约是15分钟。您可以这样增加:
foreach (var viewEngine in ViewEngines.Engines.OfType<VirtualPathProviderViewEngine>())
{
viewEngine.ViewLocationCache = new DefaultViewLocationCache(TimeSpan.FromHours(24));
}
此处提供了更多详细信息:http://weblogs.asp.net/rashid/archive/2009/04/23/asp-net-mvc-view-location-and-performance-issue.aspx