Отличная презентация об улучшении производительности ASP.NET MVC приложения:
На презентации — простейшее ASP.NET MVC приложение "DUGG". Используемые технологии:
- ASP.NET MVC 1.0 (+MVC Futures)
- Linq to SQL
- IIS 7.0
- SQL Server
Приложение построено по стандартным routes.MapRoute, с использованием методов Html.ActionLink. Дальше проводятся однопоточные тесты на нагрузку. Результат — 8 запросов в секунду. Для выявления проблемных (плохо оптимизированных) мест приложения используется JetBrain dotTravce профайлер.
Вот краткое изложение методов оптимизации 8 методов оптимизации ASP.NET MVC приложения:
Убирайте все expression-выражения из раутов (routes) и экшенов (actions). 8 -> 25,5 запросов в секунду.
Используйте RouteValueDictionary вместо анонимных параметров в методе Html.RouteLink. 25,5 -> 27 запросов в секунду.
Используйте только скомпилированный код Linq to SQL. 27 -> 52 запросов в секунду.
Уменьшайте количество вызовов Html.RenderPartial (передавайте уже готовую, подгруженную модель один раз). 52 -> 61,5 запросов в секунду.
Кэшируйте рендеринг Url'ов. 61,5 -> 76 запросов в секунду.
Кэшируйте малообновляемые данные на долгий период. 76 -> 153 запросов в секунду.
Кэшируйте основные данные. 153 -> 400 запросов в секунду.
Да, и не забудьте изменить аттрибут debug в секции compilation файла web.config на значение false.