A good rule is to keep your front page as simple as possible... this page is going to be hit a lot. So only put content on the front page, which really needs to be there...

Another good practice is to try to limit content on the front page to content which is cacheable. Or in other words try to avoid dynamic content as much as possible... This takes a lot of load off your servers... For instance do you really need to have a poll on the front page?

It also pays off to work a bit on the images - not sure if you have done that already... but make sure you are not scaling them in html and that you have made them as small as possible size-wise using for instance Irfranview or Gimp to save them as png files (I think there might be issues with IE6 and png files tho)...

A good rule is to keep your front page as simple as possible... this page is going to be hit a lot. So only put content on the front page, which really needs to be there...

Another good practice is to try to limit content on the front page to content which is cacheable. Or in other words try to avoid dynamic content as much as possible... This takes a lot of load off your servers... For instance do you really need to have a poll on the front page?

It also pays off to work a bit on the images - not sure if you have done that already... but make sure you are not scaling them in html and that you have made them as small as possible size-wise using for instance Irfranview or Gimp to save them as png files (I think there might be issues with IE6 and png files tho)...

Just my two cents...

Thanks for the input, I had completely forgotten about the Site Poll actually, just left it in as a "filler" . One thing in that regard I am curious about, will having Plugins/Modules installed but not enabled affect performance? Should I just uninstall them if they are unused?

About the caching though, my understand of these Expires Headers are that it is possible to distinguish between static content and dynamic content, which would be handy so I could keep a little bit of dynamic content on the front page.

To give you a very short explanation: Joomla builds every page requested dynamically when it is requested. When you hit the front page Joomla says: Oh, gotta get the front page. Now how does it look? Let me fetch all the content and modules I need from the database and put it all together. Then I send the page back to the user.

This caching allows Joomla to shortcut this process. You can tell Joomla which parts of the content can be cached and which cannot. For each bit of cacheable content you save Joomla the extra work of asking the database for the content every time. If you cache timeout is 15 mins Joomla will ask the database for this content once every 15 mins instead of every time the page is requested. This saves a lot of work on the server. Note that if you update an article for instance the change will only kick through once the cache expires (or the cache is manually cleared).

Content like a poll needs to be dynamic. Otherwise a user would not be able to get the results. So every time the front page is requested Joomla needs to ask the database for the content. The same goes for components like "Who is online" for example.

Expires Headers is a different type of caching. It basically tells the users internet browser which elements the browser can cache. This is typically your banner graphics and other static elements. By setting an 'Expires' date in the future the internet browser knows not to ask your Joomla server for these elements again until the cache expires. This saves a lot of traffic on the internet and load on your server. And is speeds up the load time for subsequent requests from the same user making him/her happier too

There are other types of caching like database query caching, but I don't yet have the full overview of all these components myself, so I'd better not go that way...

Thanks a tonne for that link! I read through it a few times and I greatly misunderstood what was going on, also you inadvertently fixed another problem I was having that was cache related!

I've been working on it a lot trying to figure out what's causing the slow load speeds and found one big factor that I'm working on fixing at the moment, being all the images referenced in the CSS was getting referenced were being loaded, even if they weren't being used.

I still haven't figured out how to setup the Expires Headers but I will be sure to let you know as soon as I get it worked out!

I know it's been a while (been really busy) but I have figured it out.

As a note, this may not work for everyone, as far as I know you need to be on an Apache server with the mod_expires module enabled. If someone knows of a way to do this without mod_expires (using PHP, Javascript, anything really) I'm still trying to figure that out and any help is appreciated!

Anyways, here's what I did.

Before you do this, understand that I am in no way an expert at this and do not know if it can harm your website in any way, hopefully someone more experienced can give a little more insight.

Here's what you need to do:
Find your .htaccess file, mine was in the public root directory of my website.

Save the file, and re-upload it. Also, it is important to have the period in the file name.

.htaccess not htaccess

It's pretty self explanatory by looking at it, each line is your options for a different kind of file, followed by how long you want the expire header to be.

Important!
From my understanding (correct me if I'm wrong), if you set this on your site, and people go to the site and cache the files, then you later change that file, unless you change the file name, those people who already had it saved will not see the change until the expire header expires.

I was hoping to get an approval for the JED entry by now, but still waiting. If you search for "Clean Response" or "Scripts Down" on the JED, you can find a link to my site. It's available for download on my site right now.

Speedmetalist wrote:I know it's been a while (been really busy) but I have figured it out.

As a note, this may not work for everyone, as far as I know you need to be on an Apache server with the mod_expires module enabled. If someone knows of a way to do this without mod_expires (using PHP, Javascript, anything really) I'm still trying to figure that out and any help is appreciated!

Anyways, here's what I did.

Before you do this, understand that I am in no way an expert at this and do not know if it can harm your website in any way, hopefully someone more experienced can give a little more insight.

Here's what you need to do:
Find your .htaccess file, mine was in the public root directory of my website.

Save the file, and re-upload it. Also, it is important to have the period in the file name.

.htaccess not htaccess

It's pretty self explanatory by looking at it, each line is your options for a different kind of file, followed by how long you want the expire header to be.

Important!
From my understanding (correct me if I'm wrong), if you set this on your site, and people go to the site and cache the files, then you later change that file, unless you change the file name, those people who already had it saved will not see the change until the expire header expires.

Again, I am in no way an expert at this, so be careful!

Works.
For me, I went from 0% with expiration date to 34% expiration date.
That's a good start. Thank you posting.

The problem with the default setting as far as I can read is that it includes INode information, which is specific to one server. So if you have a cluster of servers serving the same files the INode information will be different and effectively the ETag system will not work... This will only be a problem if you have a Joomla site in a clustered environment.

If you set FileETag to none you are disabling this way of caching. However if you set it to MTime Size you are only including the modification time and file size as parameters to determine if a cacheable object has changed and needs to be reloaded... which should work fine...

Sorry. I was mistaken about JCH.
The JCH_Optimize didn't work with the css and js files for my chosen template package.
Using the plugin to compress, minify, and/or combine css and js files broke my chosen template but not other template. It works well with other template. I'm no longer using JCH Optimize, just the rests that were mentioned with the same settings.

Thank you for the FileEtag MTime Size code.
I didn't know cache could be used with it.
I'm using this code now because I want my extra cache.
ka-cink cink.
Will save hosting $ haha:D

...........................

For the expire heading problem, the code below, added under the "RewriteEngine On" line in .htaccess, works for me with or without Appache mod_rewrite under Joomla's global setting.

Note the Cache-Control: max-age=86400 line. This shows 86400 seconds, echo 86400/60/60/24|bc outputs 1 (bc is a nice command line calculator, manual page) meaning the text/html is set to expire after 1 day - as ordered.

Thus I can confirm that the mod expires works on the server. Please use the following format to specify the files' type:

I was hoping to get an approval for the JED entry by now, but still waiting. If you search for "Clean Response" or "Scripts Down" on the JED, you can find a link to my site. It's available for download on my site right now.

We enabled the expires header plugin...we may not have configured it properly and had to disable it because our content people were getting weird results from the frontend and cb_login was requiring an f5 to get correct login status...I emailed you via your site. I just seems to many things were being cached.

I plan on testing with mods too the .htaccess, as we really need to enable browser cache for our large content site...

Pages that contain dynamic content should not be cached. This includes login modules.

Your browser retrieved and cached the page before you logged in. Upon logging in, the browser didn't request a new copy of the page because the cache hadn't expired yet.

It takes some planning and testing to implement the plugin effectively.

On a news site, the home page might change every hour, so the expires time might be set for between 1/2 and 1 hour. Sites that have content that doesn't change very often could have long expiration times.