Sense/Net ECMS and portal is responsive and fast even if there are millions of content stored in the repository. To achieve this we created a Warmup module that is executed at site startup and makes sure that some of the components are loaded before the users need them.
Warmup module consists of several steps. These steps are executed individually on each web server when the IIS site starts – but only after Sense/Net Content Repository core components were started.
The steps are executed on a separate thread in the background so page execution is not blocked. This means you can immediately use the site but may experience longer response times during the first few minutes, depending on how much time the warmup takes. The most time-consuming step of the warmup is loading the ASP.NET control files – you can control the behavior of this step as you can see in the next section.
The warmup module consists of the following steps that are executed during warmup.
- preload types: a number of .NET types are preloaded into memory. Currently the list of files can be modified only in source code.
- template replacers and resolvers: template replacers and resolvers are used during content query execution.
- Jscript evaluator: used when evaluating default values given in CTDs.
- xslt files: all xslt files are preloaded into memory.
- content templates: all content templates are preloaded into memory
- preload controls: some of the ascx controls (e.g. field controls, Content List views or custom views) found in the repository are preloaded and compiled. This makes sure that even the first request for pages containing these controls gives a fast response.
- preload security items: built-in system groups (Administrators, Creators, etc.) are preloaded.
You can configure whether warmup is executed at site startup or not. The default value of the WarmupEnabled setting is true.
You can also control which ASP.NET controls (ascx files) are loaded into memory at warmup time. In case there are too many ascx files in your repository or there are files that must not be loaded, you can filter them using the WarmupControlQueryFilter setting by providing a content query.
<configuration> <sensenet> <portalSettings> <add key="WarmupEnabled" value="true" /> <add key="WarmupControlQueryFilter" value="" /> </portalSettings> </sensenet> </configuration>