2

我正在对 asp.net MVC 2 应用程序(webforms 作为视图引擎,linq2SQl 作为 orm 层)进行性能微调。我正在使用 mvc mini-profiler 来分析页面渲染。我(目前)没有使用任何输出缓存。

我注意到我网站的几乎所有页面上都有一些奇怪的行为。

当我第一次点击页面时,渲染大约需要200 毫秒,其中我有大约15 毫秒的数据库查询时间(对存储过程的调用)。

随后对同一页面的所有点击都在大约20毫秒内呈现,其中查询保持在大约 15 毫秒。所以在这种情况下,我假设页面在大约6ms内呈现。

如果我在大约5 分钟内没有点击该页面(并且没有任何其他请求)并且我现在尝试点击同一页面,则需要200ms才能呈现所有后续调用,顺序为18-20ms。此外,我已验证没有发生 IIS 应用程序池回收

怀疑 MVC 框架中的某处缓存在几分钟后失效,需要进行微调。

有任何想法吗?

4

1 回答 1

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

于 2011-09-14T19:17:08.653 回答