ASP.NET MVC производительность рендеринга страницы проблемы - PullRequest
2 голосов
/ 14 сентября 2011

Я выполняю тонкую настройку производительности приложения asp.net MVC 2 (веб-формы как движок представления, linq2SQl как слой orm). Я использую мини-профилировщик mvc для рендеринга страницы профиля. Я не использую (на данный момент) никакой кеш вывода.

Я замечаю немного странное поведение почти на всех страницах моего сайта.

Когда я впервые захожу на страницу, для рендеринга требуется около 200 мс , где у меня есть около 15 мс времени запроса в БД (вызов сохраненного процесса).

Все последующие обращения к той же странице обрабатываются за 20мс , где запрос остается до 15мс. Так что в этом случае я предполагаю, что страница отображается примерно за 6ms .

Если я не захожу на страницу в течение примерно 5 минут (и нет никакого другого запроса), и я пытаюсь перейти на ту же страницу, требуется 200 мс , чтобы рендеринг со всеми последующими вызовами в порядке 18-20мс . Также я убедился, что не произошла переработка пула приложений IIS .

Подозревается, что где-то в инфраструктуре MVC есть кэш, который через несколько минут становится недействительным и требует точной настройки.

Есть идеи?

1 Ответ

2 голосов
/ 14 сентября 2011

Кэш по умолчанию для местоположения просмотра веб-форм составляет 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

...