Recently we noticed our website was slowing down. Just us? No; we analyzed the download speeds and sure enough, overall load time had decreased. So we looked at the pages for what could be causing a performance snag.
Turns out, there are all sorts of places where we COULD improve performance! So many in fact, we made a list. And started implementing fixes.
What Happened? Big Pages and Lots of Hosted Sites
Some of our webpages had reached 5Mb in size–or larger! That’s like a dog trying to run with a sack of potatoes tied to his tail.
In addition, we had several more Sitefinity CMS websites on the same server. Both of these had contributed to a 50% drop in performance. Over time, it grew to a 100% drop. Then 200%. Worse and worse as time went by.
One of the worst things an IT consultant has to deal with is a sluggish website. Especially when it’s their own! So we combed through our CMS, our pages, our CSS and our RAD controls. Snags started popping up.
Here’s what we did to correct them:
- Use the support resources available. Telerik and Sitefinity have large documentation libraries, and a well-trafficked user forum. Many others have probably had similar experiences and may have some quick advice for common issues.
- Open a support ticket with your host. Tell your ISP you’re having performance issues. Maybe system resources were recently diverted. Or their databases need work. These things are out of your control…but not theirs.
- Review memory consumption and network bandwidth. Check file inputs and outputs. See if there’s a bottleneck in a physical part of the system.
- Look at hard drive fragmentation on the servers. Disk fragmentation slows everything down.
- Tune the database server. SQL logs can often catch the reasons behind performance issues. Analyze database performance with its manufacturer tools.
- When was the last time you rebuilt/reorganized your site’s database? You might have database fragmentation—an uncommon, but aggravating performance headache.
- Review the web server settings. There are a number of improvements that can be configured right away. For example, content expiration. Or static/dynamic content compression.
- Check the default file sequence. Make sure your homepage type is the first file type looked for by the web server.
- How often do you recycle the App Pool? Too often can slow a busy website down. Not often enough can also cause problems.
- Web applications all consume different amounts of memory. Set your App Pools to cycle when memory reaches a maximum (virtual or physical).
- Are you still in debug mode? Check application configuration to be sure! This is a very common mistake. (Happened to us.) To correct it, set compilation debug=”false”.
- Are all dependencies compiled in release mode? If the application was in debug mode, chances are production libraries are too.
That’s not all we found. The rest of these are advanced Sitefinity performance tweaks, though. We recommend only experienced ASP.NET developers use them. (Backup the whole application before doing so! Just in case!)
- Disable View State in CMS administration for each page.
- Enable caching in CMS administration for each page.
- You can reconfigure libraries specific to a Sitefinity website using Telerik RadControls. Try enabling RadCompression and View State compression.
- Compress script resources using Script Manager class controls.
- If you try #4, enable script caching and compression in configuration.
- CSS files that have URL references for images must all exist. This is a strange behavior that resulted in numerous additional calls to images within the App_Themes folders to files that did not exist. A single error can cause numerous additional 404 errors from the web server for embedded resources.
- Use RadStyleSheetManager to reduce the number of style sheet requests to one.
- Develop using HTTP compression handlers to compress entire page size before sending the page to the browser. (Very advanced; DO NOT ATTEMPT unless an ASP.NET expert!)
- Develop using Substitution controls to take advantage of advanced output-caching techniques (also a very advanced topic). For an example, look at our Web Dev Portfolio. It uses advanced output-caching with Substitution controls and AJAX refresh techniques. The controls make for a high-performance (and visually pleasing!) user experience.
Performance optimization is not an exact science. You’re always aiming at a moving target–different connections, different client types. Which is why it’s important to keep an eye on factors like these.
If you have questions on these tweaks, or need performance improvements for your website, please contact PlanetMagpie.