I have blogged a few times on the performance testing and improvements in 4.4.0. This Blog will focus on two areas which were added towards the end of the development cycle.
An HttpCompression and Whitespace filter have been added as a single HttpModule. They are implemented as a single module call Compression. This module was based on the Blowery Compression Module (whose code was donated to the project a few months ago). As the original Blowery code was in C# this module is also in C#. A number of changes have been made from the Blowery module:
- Some settings have been moved from the web.config to the Host Settings (under the new Performance Section) - these include the type of compression (None, Deflate and GZip) and the level of compression.
- The rest of the settings have been moved out of web.config into a separate xml file (Compression.config) which can be found in the \Config folder and which is copied to the root folder when first needed. This config file allows the user to set the excluded paths and mime-types.
- A Whitespace filter (based on a regular expression (regex)) has been added to the module. It is enabled under the performance section - and the regex used to strip the whitespace can also be set there.
Note: As this is implemented as an HttpModule two things should be noted - the module must be enabled in web.config, in the HttpModules section - if you are upgrading copy the relevant node from release.config to your web.config file. Secondly, only file types processed by ASP.NET will be compressed - ie css and js files are processed normally.
Originally we had hoped to enable a system that would not "force" all assemblies to be loaded on Application Start, by moving some of the assemblies to subfolders of \bin. This reduces the memory footprint of dotnetnuke, when there are assemblies installed that are rarely or never used.
Unfortunately, we ran into issues with upgrades, and so we decided not to implement those changes. However, it still remains true that the \bin should only contain assemblies the application needs. We therefore decided that, while all module zips are included in the Install package, only HTML and Links are installed by default - these are required for the default template.
The other modules are present (renamed as .resources) and can be installed through the Module Definitions page, either singly or all at once, by checking the module(s) in the list of available modules at the bottom of the page, and clicking "Install Now".