Currently, we are working on very large applications consisting of a number of projects which takes more time to build solution, startup time as well as overall application running time. We have different levels of performance optimization in a web application as below:
- Build Time
- App Startup Time
- Web Application Performance
In this tip, I am sharing my views for these three levels of optimization that I've been applying in my applications.
Web Application Performance
There are multiple things that we can do for optimizing the application performance. Apart from the technical part, we can also configure AppPool as below:
AlwaysRunning as shown below:
Right click on AppPool -> Advance Settings:
It will optimize the time by 20-30%.
Optimize Build Time
Suppose a web application takes approximately 3 minutes to build so each time we change a line of code, we must wait for 3 minutes. Build time should not be >1 minute. If it is, then we should optimize it by applying the following steps:
Step 1: Build Settings
- Use Parallel Builds
- Only Build Startup and Dependencies on Run
- Set Build Verbosity
Step 2: Use Razor Generator for PreCompiling MVC Razor Views.
You can refer to the below link for using Razor Generator.
Step a: Go to Tools -> Extension and updates
RazorGenerator -> download it and install
Step b: Download and install razor generator using nuget
Or By Console command:
After installing Razor Generator, it will add the below:
- RazorGeneratorMvcStart.cs in App_Start folder
- Below packages:
- Some code in .csproj
Step c: .csproj changes:
- Add the below
BeforeBuild target code right after the previously added line to import the RazorGenerator.targets file:
<Content Remove="Views\**\*.cshtml" />
<None Include="Views\**\*.cshtml" />
- Add the below properties in .csproj:
Now Build application, .cs files will be created for cshtml views under /obj/CodeGen/.
Step 3: In Web.config, set optimizeCompilations to true
<Compilation debug="true" targetFramework="4.5" optimizeCompilations="true"/>
Optimize App Startup Time
AppStart time is after rebuilding solution, first page loads time.
From a development point of view,
appstart time should be as minimum as possible. In a large application, whenever we change a single line of code and run the app after rebuild, a developer must wait for 2-3 minutes.
We can try the following:
- Remove unused DLLs if any.
- From the architecture point of view, there should be less number of DLLs.
- In dependency injection implementation, Dependency Resolver the lifetime scope should be singleton (
For easy development, build time and
appstart time should be minimum, otherwise developers have to wait unnecessarily for long for a single line code change.
You can also take a look at my other tips: