There are lots of articles about improving Joomla site speed and I read a most of them. The problem was after reading all of the suggestions you can be left pretty confused about where to start and which modifications to apply first.
Ask yourself these questions before beginning:
- Am I comfortable with technical work in Joomla?
- Will any of these changes end up hurting my site?
- Which changes are major improvements and which are minor?
- How do I know if my changes have made the site faster?
I have spent the past couple of weeks learning and testing changes out and decided to create this guide for those who are new to improving Joomla site performance and those who do not have the technical or financial resources for full time webmasters or dedicated hosting.
Step 1: Get an uptime monitor
If you want to improve performance you need to develop a response time baseline. An uptime monitor that provides response time reporting is the best way to do this. Having a good uptime monitor gives you so much good information about your site. It bridges the gap between your analytics and site performance.
We use Pingdom. They are not the most inexpensive but we have found them to be the best. Since Pindom Review was made they have changed there signup options and now offer a free account where you can monitor a single site.
In addition to notifying you when your site goes down they give you site response time graphs. This is a response time graph for this site JoomlaHostingReviews.com you can see that a couple of weeks ago the response time really dropped as a result of switching hosts. I am planning a full writeup of this move
Step 2: Setup a CDN
CDN's solve many of the problems of a slow website. This is because they provide another source for browsers to download your website's files. All your hosting provider has to do is get the HTML served out to the browser and the CDN will handle many of the other files. Including: .CSS/.JS files, images, and some other file types.
If you are running a site for business or receives a significant number of views, a CDN is a logical choice. Pretty much all major websites run a CDN, and if they don't, they will still have a method of delivering files quickly.
Visit Our Recommended CDN
Step 3: Remove unneeded Extensions
First is it good house keeping to have a clean organized site. Second the less code you have installed the less that code that has to be maintained and could possibly be compromised.
Afraid to remove stuff? Check out Joomlapack and make a backup of your site before you remove any extensions. In case you remove something that is needed you can always roll back to an earlier version. Be sure you test the restore process so if you have to roll back you know it will work.
Beginners work on removing your third party extensions. Advanced users that have removed all third party extensions you may be able to unpublish some of the core Joomla plugins. Here is our guide to Core Joomla Plugins.
Step 4: Site Caching
Each time a visitor views your site Joomla must assemble the pages from the database and php to display it in html. Wouldn't it be easier if the final out put could be stored? Well that is what site caching does. Joomla will create the page for the first visitor and then store in the the cache. Then when the second, third, fourth..., visitor views the page, the view the fast loading cached copy.
Caching does add a layer of compexity to your site but the performance gains are well worth it. Caching can get particularly difficult if yous site has any interactive features or forms.
Caching can be turned on in the Joomla Core or added through a third party extension. The Art of Joomla has good article that explains the different Joomla Caching Options. Looking for the third party options check out the Caching section of the Joomla Extension Directory. Cache Accelerate by JoomlAtWork is another caching extension that is pretty good, lots of features and good support. It is not listed in the JED.
Step 5: CSS / JS optimization
CSS / JS optimization is the art of removing all of the comments, white space, compressing and combining all the CSS and JS files into one file. It would be a lot of work to do by hand luckily there are several extension to help. Not all files work well when compressed which is why you want to look for an extension that will allows you to exclude file if needed.
CSS/JSCompress is a good solution. It installs as a plugin and allows you to exclude JS or CSS files. Also has the option to gzip the page if needed.
RokGZipper by RocketTheme is another option. Have not worked with this one personally and RocketTheme has a note stating that this extension is still experimental.
For those of you looking for a roll your own solution check out Google Minify
Step 6: ReEvaluate Your Hosting Company
Hosting is perhaps the most important element of making your site go fast. If you have a slow server all of these other improvements will not matter. How do you tell if you are on a good server? Check your response time graphs from your uptime monitoring company. The results will probably be eye opening. To borrow a line from Google Analytics, it may not be good news but it is good news to know.
For me working with pingdoms repsonse times on shared hosting I aim for response times around 500ms anything up to 800ms is good you start getting much above that and I think the site could be running faster.
Think they are doing a good job? Keep them
Think they could be doing better? email them and present them with your response time graph and ask them what they can do help improve your site performance. Perhaps they will move you to another server, perhaps not. Consider your time it takes to convince a hosting company your site is slow and it might be better to spend a little more money for better hosting.
Getting a Joomla specific hosting company can also help to increase the speed of your Joomla website. We host several websites at Cloud Access and find they work great.