While not a new development, a recent hot topic talked about in the DotNetNuke forums which can greatly improve the performance of your DNN installation is referred to as HttpCompression.
Note: This method is suitable for DotNetNuke versions below 4.4.x - later versions of DotNetNuke have compression options built in.
HttpCompression refers to a method of compressing data sent from your server then passing that data to the client browser where it is decompressed on the fly. Thus increasing the display speed of your pages by sending less data across the pipe.
With an end goal of sending less data sent between your server and your client's browser, what is the best solution for adding this to DotNetNuke?
The answer is simple, and installation - trivial. A few years ago, Ben Lowery
released an extremely useful library for completing just this task. Titled blowery.Web.HttpCompress, the Blowery Http Compression Filter for ASP.Net provides a powerful compression mechanism which, in real time, compresses the outgoing data. Sending less data to the browser in turn effectively reduces not only the cost of time for rendering, but also your overall bandwidth usage per request.
While the algorithm indeed requires some execution time to physically reduce the size of the data, the resulting transfer occurs all the more rapidly and boosts speed considerably.
In our tests, we have achieved a compression rate of about 90%. Across test subjects amassing a total physical size of 880Kb, the resulting transfer was reduced to a mere 87k. Even small pages are reduced at significant levels.
Use the following install instructions:
Note: You must disable this feature whenever attempting a DotNetNuke upgrade.
- Download the library from blowery.org (Binary Only). We use the latest build.
- Open the zip file and copy the binary .dll files from the Module folder into your Bin folder on your DotNetNuke installation.
- Add the following code snippets to your web.config :
Within <configSections> add
<section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/>
Within <configuration> add
<httpCompress preferredAlgorithm="deflate" compressionLevel="high">
Within <httpModules> add
<add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/>
- Save the web.config and test out the compression
Notes from the editor: - This is a fantastic and essential tip for any DNN website, but:
- Make sure you backup your web.config file before making any alterations
- Test this on a localhost install first before trying it on a live website, some modules are not compatible with the Http Compression
- I've included an example web.config file below so that you can compare your settings
- This works with any DotNetNuke website, DNN Creative is using Http Compression
- Remember to disable this function whenever you upgrade DotNetNuke!
These were my results:
|| Home Page Size Before
|| Size After
|| 76.81kb (78652bytes)
|| 13.82Kb (14147bytes)
|| 46.12kb (47229bytes)
|| 9.83Kb (10067bytes)
| DNN Creative
|| 41.18kb (42165bytes)
|| 12.4Kb (12698bytes)
It is also possible to enable Http Compression from within IIS 6.0 - this is probably only an option for those users who host their own websites. You can read further information here: Enabling Http Compression (IIS 6.0)
Listen to the How Did They Build … ? The Bi4ce DotNetNuke Website - MP3 interview
with Chris Chodnicki and Kevin Schreiner